来自单独文件的Python变量值?

时间:2017-12-10 15:02:10

标签: python

我有一个每天24小时运行的Python脚本。

此脚本中的模块正在使用我希望不时更改的变量值,而不必停止脚本,编辑模块文件,然后再次启动脚本(我需要尽可能多地避免中断) )。

我考虑过将变量存储在一个单独的文件中,并且模块会在需要时从文件中获取新值并使用它们。

Pickle似乎是一种解决方案,但不是人类可读的,因此不易改变。也许是JSON文件,或者我再次导入的另一个.py文件?

对我而言,这样做的另一个好处是,如果中断(例如服务器重启),如果我从单独的文件加载它,我可以使用最新的变量值恢复脚本。

是否有建议的方法来做这些事情?

有些事情:

# variables file:
variable1 = 10
variable2 = 25


# main file:
while True:
    import variables
    print('Sum:', str(variable1+variable2))
    time.sleep(60)

1 个答案:

答案 0 :(得分:2)

使用变量维护文本文件的简单方法是YAML格式。 This answer explains如何使用它,基本上是:

import yaml
stream = open("vars.yaml", "r")
docs = yaml.load_all(stream)

如果您有多个变量,最好检查文件描述符以查看该文件是否最近更新,并且只在文件发生更改时重新加载变量。

import os
last_updated = os.path.getmtime('vars.yaml')

最后,由于您希望避免中断脚本,最好让脚本捕获YAML文件中的任何错误并警告用户,而不是仅抛出异常并死掉。但也要记住“错误绝不应该默默地传递”。这里最好的方法取决于你的用例。