如何编辑子目录中的 .py 配置文件?
How do I edit a .py config file in a subdirectory?
我正在尝试读取和编辑 python 中的配置文件。这是文件结构:
main.py
folder
-> __init__.py
-> module.py
-> config.py
我有四个文件:
main.py
import folder.config as config
import folder.module as module
if __name__ == "__main__":
config.x = 2
module.foo()
init.py
import os, sys; sys.path.append(os.path.dirname(os.path.realpath(__file__)))
module.py
import config
def foo():
print("Result from function: " + str(config.x))
config.py
x = 10
我希望调用 'foo' 的结果为“2”,但它却打印出“10”,即配置文件的默认值。我如何确保对 'main.py' 中的 'config.py' 所做的更改持续到其他模块?
如有任何帮助,我们将不胜感激!
为什么不使用 JSON 或 csv 或任何其他格式来存储值?
编辑:
我建议采用以下解决方案:
main.py
import folder.config as config
import folder.module as module
if __name__ == "__main__":
config.set_x(2)
module.foo()
init.py
import os, sys; sys.path.append(os.path.dirname(os.path.realpath(__file__)))
module.py
import config
def foo(): print(f"Result from function: { str(config.get_x()) }")
config.py
import json
def read_json():
with open("data.json") as f: d = json.load(f)
return d
def write_json(d):
with open('data.json', 'w') as f: json.dump(d, f)
try:
data = read_json()
except:
data = {}
write_json({})
def set_x(val):
data["x"] = val
write_json(data)
def get_x():
print(data)
return data["x"]
我正在尝试读取和编辑 python 中的配置文件。这是文件结构:
main.py
folder
-> __init__.py
-> module.py
-> config.py
我有四个文件:
main.py
import folder.config as config
import folder.module as module
if __name__ == "__main__":
config.x = 2
module.foo()
init.py
import os, sys; sys.path.append(os.path.dirname(os.path.realpath(__file__)))
module.py
import config
def foo():
print("Result from function: " + str(config.x))
config.py
x = 10
我希望调用 'foo' 的结果为“2”,但它却打印出“10”,即配置文件的默认值。我如何确保对 'main.py' 中的 'config.py' 所做的更改持续到其他模块?
如有任何帮助,我们将不胜感激!
为什么不使用 JSON 或 csv 或任何其他格式来存储值?
编辑: 我建议采用以下解决方案:
main.py
import folder.config as config
import folder.module as module
if __name__ == "__main__":
config.set_x(2)
module.foo()
init.py
import os, sys; sys.path.append(os.path.dirname(os.path.realpath(__file__)))
module.py
import config
def foo(): print(f"Result from function: { str(config.get_x()) }")
config.py
import json
def read_json():
with open("data.json") as f: d = json.load(f)
return d
def write_json(d):
with open('data.json', 'w') as f: json.dump(d, f)
try:
data = read_json()
except:
data = {}
write_json({})
def set_x(val):
data["x"] = val
write_json(data)
def get_x():
print(data)
return data["x"]