在Python中的文件之间传递变量

时间:2019-04-15 01:41:56

标签: python

我对python还是很陌生,但是一个小组项目团队的成员给了我一些代码,我需要将它们与自己的代码集成在一起。主程序包含在main.py文件中,该文件从settings.py文件导入变量。 main.py还从functions.py文件导入函数。 functions.py还从settings.py导入变量。我自己的代码需要迭代,因此我需要能够在运行main.py时更改settings.py变量以解决问题。理想情况下,我可以找到一种方法来调整队友代码,使其成为可以简单地将变量传入和传出的函数。

我试图将变量从main.py导入到settings.py,但这导致循环导入。我找不到任何解决方案,也不是因为缺乏尝试,所以非常感谢您的帮助。

main.py
import settings
import function
settings.x=10
print(settings.x+function.y)


settings.py
x=1

function.py
import settings
y= settings.x

有效地,我希望它打印出20个而不是11个。

1 个答案:

答案 0 :(得分:2)

如上所述,您可以使用import settings来导入settings.py,但这听起来像是您打算(ab)使用代码文件作为数据文件。

如果目标是允许在运行之间快速更改设置,或者甚至允许在多次迭代过程中修改数据,则绝对应该考虑使用其他文件格式作为设置。

一个不错的选择是使用.json。例如:

main.py:

import json

settings = json.load(open('settings.json'))

print(settings)

settings.json:

{
    "some_setting": 1,
    "some_list": ["a", "b", "c"],
    "nested_stuff": {
        "message": "Hello World!"
    }
}

请注意,.json文件看起来很像Python字典,但是您需要使用双引号,并且还有其他一些特定的限制。

如果还要从代码中更新文件,则使用json特别方便,例如:

import json

with open('settings.json') as f:
    settings = json.load(f)

settings['some_setting'] += 1

with open('settings.json', 'w') as f:
    json.dump(settings, f)