在python中,是否可以设置本地模块的变量并将其保存到文件中?

时间:2018-04-07 07:16:57

标签: python python-3.x python-module

所以,一个场景:

假设我将python项目放在名为' pyproj'的目录中。主文件' myproj.py'和另一个文件(' config.py')包含一些变量:

 -f <file>        Parse and execute <file>.

在myproj.py&#39;内,是否可以设置变量......

cfg_x = {}
cfg_y = 1031
cfg_z = 'Hello!'

...并保留设置(写入文件)?我尝试使用上面的代码执行此操作,但是如果我退出python控制台并再次运行它,变量仍会保留import config cfg_x['example'] = 'different value'

2 个答案:

答案 0 :(得分:0)

这是使用config.json的简化版本,用于您想要做的事情。请注意,这会创建格式错误的JSON,因此您可能需要编辑一些内容。

config.py通过使用标准lib json写入文件,从config python dict创建config.json文件。

import json

config = {"cfg_x": {"example": "old value"}, "cfg_y": 1031, "cfg_Z": "Hello"}

with open('config.json', 'w') as file:
    json.dump(config, file)

创建文件

~/Desktop/octocat » cat config.json                                                          
{"cfg_x": {"example": "old value"}, "cfg_y": 1031, "cfg_Z": "Hello"}%                                                                     (venv1)

myproj.py以config.json读取模式打开'r'更改嵌套密钥并写入文件。

import json

with open('config.json', 'r') as file:
    config = json.load(file)

config["cfg_x"]["example"] = "different value"

with open('config.json', 'w') as file:
    json.dump(config, file)

修改过的文件。

~/Desktop/octocat » cat config.json                                                          
\{"cfg_x": {"example": "different value"}, "cfg_y": 1031, "cfg_Z": "Hello"}%                                                              (venv1)

在实际情况下,我通常会使用已存在的百万个Python配置库中的1个,而不是像这样的东西。以下是一个示例:https://jbasko.github.io/configmanager/

如果你使用它,你最不想修改config.py来检查文件是否已经存在而不是覆盖整个config.json。

答案 1 :(得分:0)

正如其他人所说,使用配置文件明确不是好的方式。但如果你真的想要做这种事情(毕竟,我猜你是同意的成年人),只需更换你的第一行:

from config import *

print(cfg_x)
cfg_x['example'] = 'new value'
print(cfg_x)

产生以下输出:

{}
{'example': 'new value'}