Попытка чтения и записи в глобальную переменную изнутри оператора if / else, но с ошибкой
SyntaxError: имя 'PREV_HASH' назначено перед глобальным объявлением
Я пытался использовать глобальный синтаксис, но не могу заставить его работать.Не используется для глобальных локальных переменных v в python
PREV_HASH = ''
LOGFILE_DIRECTORY = 'c:\\securelog\\securelog_logs\\'
ARCHIVE_FOLDER = 'c:\\securelog\\securelog_archive\\'
WORKFILES_FOLDER = 'c:\\securelog\\securelog_workfiles\\'
TMP_FOLDER = 'c:\\securelog\\processed\\'
COMPLETED_FOLDER = 'c:\\securelog\\completed\\'
CHAIN_FILE = WORKFILES_FOLDER + 'chain_info.txt'
#check if this is the first run, if it is hardcode the block & previous hash and pass the hash
if chain_list[0] == 1:
fileHandle = open (CHAIN_FILE, 'r+')
fileHandle.write('1,0,' + hasher.hexdigest())
fileHandle.close()
global PREV_HASH
PREV_HASH = hasher.hexdigest()
#print("1 previous hash is: " + str(PREV_HASH))
else:
#update list with hash of current and previous block
###del (chain_list[1:])
global PREV_HASH
chain_list.insert (1,PREV_HASH)
print("2 previous hash is: " + str(PREV_HASH))
chain_list.insert (2,hasher.hexdigest())
fileHandle = open (CHAIN_FILE, 'a')
print('2 what is the chain list at this point:' + str(chain_list))
#Write the contents of the list to the chain file on a new line and separate with a comma
fileHandle.write(',' + str(chain_list[2]))
fileHandle.close()
PREV_HASH = hasher.hexdigest()
Я ожидаю, что при первом запуске скрипта будет создан новый файл, содержащий одну строку с 1, 0 и сгенерированный ключ хешана предыдущем шаге ("hasher.hexdigest ()") Затем этот хеш будет сохранен в глобальной переменной PREV_HASH
Затем при втором запуске файл будет обновлен новой строкой из списка.Он будет содержать увеличенный номер, предыдущий хеш и текущий хеш
2, предыдущий #, текущий #
При удалении глобального PREV_HASH я получаю следующий вывод
>file does not exist
>-----------------
>24
>1--2019-05-31-archive.zip
>what is the chain list at this point:[1, 0, 0]
>1 previous hash is:
>C:\Python>"SL Proof of Concept.py"
>-----------------
>17
>2--2019-05-31-archive.zip
>what is the chain list at this point:[2, '0', '01d056902f77f5a247f639d363b67827d762d72f9738498989d417563c504a3f82f7b44d7e827cd35843545d33856c85']
>2 previous hash before insert is:
>2 what is the chain list at this point:[2, '', '93fcc831b99a8de59063924a994bf81d09dc677b635e32fc133747ca564bfa843fa6bf60274feeb372a5eeb6f406a120', '0', '01d056902f77f5a247f639d363b67827d762d72f9738
498989d417563c504a3f82f7b44d7e827cd35843545d33856c85']