You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入py文件修改变量后如何永久保存修改到原文件?

核心原因

Python导入模块时,仅会在加载阶段将磁盘上的源文件内容读取到内存中运行。你对user.coin的赋值操作,修改的只是内存里的模块属性,不会对磁盘上的user.py源文件做任何写入,程序退出后内存数据释放,修改自然不会持久化。

实现方法

方法1:直接修改user.py源文件(完全匹配你的需求)

通过文本读写+正则匹配替换coin的赋值行,就能把更新后的值直接写入源文件,下次导入时就会读取到新值。
在你的运行脚本中加入写文件逻辑即可:

import user
import re

print(user.coin)  # 输出 100

# 更新内存中的变量值
new_val = 50
user.coin = new_val

# 把新值写回user.py源文件
with open("user.py", "r", encoding="utf-8") as f:
    file_content = f.read()

# 正则匹配coin的赋值行并替换
updated_content = re.sub(r'coin\s*=\s*\d+', f'coin = {new_val}', file_content)

with open("user.py", "w", encoding="utf-8") as f:
    f.write(updated_content)

运行后打开user.py就能看到文件内容已经更新为coin = 50。

注意:该方案仅适合结构简单的单文件场景,如果user.py内逻辑复杂,正则替换存在误改其他代码的风险,稳定性不足。

方法2:配置文件持久化(推荐的常规做法)

直接修改源码文件不是工程上的常规操作,更合理的方案是把需要动态调整的数值存在独立的配置文件中,源码只负责读写配置,既不会破坏源文件结构,稳定性也更高。
示例实现:

  1. 新建config.json存储动态变量:
{
    "coin": 100
}
  1. 修改user.py,实现配置读写逻辑:
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):
    with open(CONFIG_PATH, "w", encoding="utf-8") as f:
        json.dump(config, f)

def set_coin(value):
    config = _load_config()
    config["coin"] = value
    _save_config(config)

# 模块加载时读取初始值
coin = _load_config()["coin"]
  1. 业务代码中修改变量:
import user
print(user.coin)  # 输出 100
user.set_coin(50)

修改后的值会永久存在config.json中,下次启动程序导入user时,会自动读取到更新后的50,不会出现修改丢失的问题。

内容的提问来源于stack exchange,提问作者Anirudh Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:06:43