Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何写入、读取和写入全局变量_Python_Variables_Global_Local - Fatal编程技术网

Python:如何写入、读取和写入全局变量

Python:如何写入、读取和写入全局变量,python,variables,global,local,Python,Variables,Global,Local,试图从if/else语句内部读写全局变量,但出现错误 SyntaxError:在全局声明之前已将名称“PREV_HASH”分配给 我尝试过使用全局语法,但无法使其工作。不习惯python中的全局v局部变量 PREV_HASH='' 日志文件\u目录='c:\\securelog\\securelog\u日志\\' 存档\u文件夹='c:\\securelog\\securelog\u存档\\' 工作文件\u文件夹='c:\\securelog\\securelog\u工作文件\\' TMP_文件

试图从if/else语句内部读写全局变量,但出现错误

SyntaxError:在全局声明之前已将名称“PREV_HASH”分配给

我尝试过使用全局语法,但无法使其工作。不习惯python中的全局v局部变量

PREV_HASH=''
日志文件\u目录='c:\\securelog\\securelog\u日志\\'
存档\u文件夹='c:\\securelog\\securelog\u存档\\'
工作文件\u文件夹='c:\\securelog\\securelog\u工作文件\\'
TMP_文件夹='c:\\securelog\\processed\'
已完成的\u文件夹='c:\\securelog\\COMPLETED\'
CHAIN\u FILE=WORKFILES\u FOLDER+'CHAIN\u info.txt'
#检查这是否是第一次运行,如果是硬编码块和上一个哈希并传递哈希
如果链表[0]==1:
fileHandle=open(链文件'r+')
fileHandle.write('1,0',+hasher.hexdigest())
fileHandle.close()
全局上下散列
PREV_HASH=hasher.hexdigest()
#打印(“上一个哈希为:”+str(上一个哈希))
其他:
#使用当前块和上一块的哈希更新列表
###del(链表[1:])
全局上下散列
chain_list.insert(1,上一个散列)
打印(“2个上一个散列为:”+str(上一个散列))
chain_list.insert(2,hasher.hexdigest())
fileHandle=open(链文件'a')
打印('2此时的链列表是什么:'+str(链列表))
#将列表内容写入链文件的新行,并用逗号分隔
write(“,”+str(链表[2]))
fileHandle.close()
PREV_HASH=hasher.hexdigest()
我希望在脚本的第一次运行时,将创建一个新文件,其中包含一行1、0和在上一步(“hasher.hexdigest()”)中生成的哈希键 然后,该散列将保存在全局变量PREV_hash中

然后在第二次运行时,该文件将使用列表中的新行进行更新。它将包含一个递增的数字、上一个哈希和当前哈希

2、以前的#,当前的#

当删除全局PREV_散列时,我得到以下输出

>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']

如果此代码位于文件的顶层,只需删除这些
global
语句即可


如果此代码包含在某个内容中,则需要在第一个赋值之前的第一行输入
global
。(
PREV_HASH='

这里根本没有嵌套的作用域。只需去掉
global…
行。不需要
global
。您已经在顶部定义了它……当您试图从函数内部访问变量时,只需将变量标识为
global
。这里没有任何函数,只有顶级代码。全局变量不存储单独调用之间的状态。您需要将该变量的值写入一个文件,然后从该文件读回,或者类似的东西。@JohnGordon:当您从函数访问变量时,不需要将其定义为
global
。只有在尝试更改函数中的变量时,才需要这样做。