Python运行时修改模块变量与实例并保存至模块文件的方法
如何持久保存Python模块中修改后的变量值
我明白你的需求啦——你希望程序运行后,var.py里的table实例和month变量的修改能被持久保存,下次运行程序时还能读到更新后的值对吧?
首先得理清一个关键点:当你import var时,Python会把var.py的内容加载到内存中,你后续修改的var.table和var.month其实是内存里的模块对象属性,不会自动同步回原文件。程序结束后内存释放,这些修改就消失了。要实现持久保存,你需要手动把修改后的变量写入文件。
下面给你两种可行的方案:
方案1:直接修改var.py文件(简单场景适用)
这种方式直接把更新后的变量值写入原var.py文件,但要注意:类实例不能直接写入(写入的是对象的字符串表示,下次导入会报错),所以我们需要把实例的关键属性(比如table.name)单独保存,下次启动时再重新创建实例。
修改后的代码:
- 更新
var.py,新增table_name用来存储实例的名称:
month = "jen" table_name = "" # 存储table实例的name属性 table = "" # 后续通过table_name重新创建实例
- 修改
main.py,在修改变量后写入文件:
import header import var import os # 程序启动时,从table_name恢复table实例 if var.table_name: var.table = header.table(var.table_name) # 执行你的业务逻辑,修改变量 var.table = header.table(var.month) var.month = "feb" # 将修改后的变量写入var.py文件 var_file_path = os.path.join(os.path.dirname(__file__), 'var.py') with open(var_file_path, 'w', encoding='utf-8') as f: f.write(f"month = '{var.month}'\n") f.write(f"table_name = '{var.table.name}'\n") f.write("table = '' # 启动时通过table_name创建实例\n")
方案2:使用JSON配置文件(更安全推荐)
直接修改Python模块文件有风险——如果写入的内容语法错误,下次导入模块会直接失败。更稳妥的方式是用JSON文件存储配置变量,专门负责持久化数据。
步骤:
- 创建
config.json文件,初始内容:
{ "month": "jen", "table_name": "" }
- 修改
var.py,改为从JSON加载和保存配置:
import json import os # 配置文件路径 CONFIG_PATH = os.path.join(os.path.dirname(__file__), 'config.json') def load_config(): """加载配置文件""" with open(CONFIG_PATH, 'r', encoding='utf-8') as f: return json.load(f) def save_config(config_data): """保存配置到文件""" with open(CONFIG_PATH, 'w', encoding='utf-8') as f: json.dump(config_data, f, indent=4) # 加载初始配置 config = load_config() month = config['month'] table_name = config['table_name'] table = "" # 后续恢复实例用
- 修改
main.py,实现修改和保存:
import header import var # 启动时从配置恢复table实例 if var.table_name: var.table = header.table(var.table_name) # 修改变量 var.table = header.table(var.month) var.month = "feb" # 更新配置并保存 var.config['month'] = var.month var.config['table_name'] = var.table.name var.save_config(var.config)
两种方案对比
- 方案1:无需额外文件,适合极简单的场景,但要注意避免语法错误,且只能存储可直接转为Python代码的变量类型。
- 方案2:更安全、灵活,支持复杂的配置结构,后续扩展也方便,是生产环境更推荐的方式。
内容的提问来源于stack exchange,提问作者Park GunTae
相关产品推荐
相关产品推荐

