在Python中实现全局配置
我想写一个脚本来完成一些特定的任务,每次任务完成时,我想将在Python中实现全局配置,python,Python,我想写一个脚本来完成一些特定的任务,每次任务完成时,我想将job\u done\u count增加1,也就是说,如果我运行脚本10次,job\u done\u count将是10 这就是这个脚本的样子 #!/usr/bin/env python job_done_count = 0 ... if __name__ == '__main__': do_the_job() job_done_count += 1 我有点怀疑它是否有效。因为,每次我运行脚本时,job\u d
job\u done\u count
增加1,也就是说,如果我运行脚本10次,job\u done\u count
将是10
这就是这个脚本的样子
#!/usr/bin/env python
job_done_count = 0
...
if __name__ == '__main__':
do_the_job()
job_done_count += 1
我有点怀疑它是否有效。因为,每次我运行脚本时,job\u done\u count
将设置为0,然后设置为1。它根本不记得这项工作做了多少次
我不应该把这个job\u done\u count
放在脚本中吗?您可以将job\u done\u count
变量放在一个文件中:
导入操作系统,pickle
如果os.path.exists('job\u count.pickle'):
以open('job_count.pickle','rb'作为句柄:
作业\完成\计数=pickle.load(句柄)
其他:
作业\完成\计数=0
...
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
做你的工作
作业完成计数+=1
以open('job_count.pickle','wb')作为句柄:
pickle.dump(作业\完成\计数、处理)
您可以将作业完成数
变量保存到文件中:
导入操作系统,pickle
如果os.path.exists('job\u count.pickle'):
以open('job_count.pickle','rb'作为句柄:
作业\完成\计数=pickle.load(句柄)
其他:
作业\完成\计数=0
...
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
做你的工作
作业完成计数+=1
以open('job_count.pickle','wb')作为句柄:
pickle.dump(作业\完成\计数、处理)
或不要使用pickle,请按以下任何方式进行
手工
with open("jobs_done.txt") as inp:
job_done_count = int(inp.read().strip())
与
或者用十亿其他的方法 或者不要使用pickle,用以下任何一种方法来做 手工
with open("jobs_done.txt") as inp:
job_done_count = int(inp.read().strip())
与
或者用十亿其他的方法 您可以使用将
job\u done\u count
保存到一个文件中,并在每次运行时将其还原。因此,如果我将job\u done\u count
放在脚本中,那么我将无法获得正确的值。为什么?首先从文件中获取,然后将其保存到文件中。为什么不正确?您可以使用将job\u done\u count
保存到一个文件中,并在每次运行时将其还原。因此,如果我将job\u done\u count
放在脚本中,那么我将无法获得正确的值。为什么?首先从文件中获取,然后将其保存到文件中。为什么不正确?您可能希望在保存pickle之前增加job\u done\u count
。对于这样一个简单的整数,您真的不需要费心进行pickle。只需使用handler.write(str(job\u done\u count))
将其写入文件,然后使用int(handle.read())还原即可。更简单,任何其他程序也可以读取和写入文件。这两种解决方案仅相差几个字符。我更喜欢pickle
,因为job\u done\u count
几乎可以用任何其他Python对象替换,代码仍然可以很好地工作。在保存pickle之前,您可能希望增加job\u done\u count
。对于这样的简单整数,您真的不需要费事对其进行pickle。只需使用handler.write(str(job\u done\u count))
将其写入文件,然后使用int(handle.read())还原即可。更简单,任何其他程序也可以读取和写入文件。这两种解决方案仅相差几个字符。我更喜欢pickle
,因为job\u done\u count
几乎可以用任何其他Python对象替换,代码仍然可以很好地工作。10亿个方法可能有点高估了。;-)xml呢?:)我同意在这里使用pickle是过分的,它会产生一个不容易从其他语言检查的文件。十亿个方法可能会有点高估。;-)xml呢?:)我同意在这里使用pickle是过分的,它会产生一个不容易从其他语言检查的文件。