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

如何修改并保存外部文件中的布尔值——密码存储功能开发疑问

解决修改Python模块变量并持久化到文件的问题

为什么原有方法不生效

导入booleans模块后修改booleans.storepass,只是修改了内存中模块对象的属性值,并不会同步到磁盘上的booleans.py文件。程序重启后,模块会重新从文件加载,所以值会恢复为初始的False。

方案一:直接修改booleans.py文件内容

通过读写文件的方式,找到storepass的赋值语句并替换,实现持久化修改。

示例代码:

# storepasswordquestion.py
import re

user_choice = input("是否希望下次运行保存密码?(y/n): ").strip().lower()

# 定义要修改的目标值
target_value = user_choice == 'y'

# 读取booleans.py内容
with open('booleans.py', 'r', encoding='utf-8') as f:
    file_content = f.read()

# 用正则匹配并替换storepass的赋值(兼容不同空格格式)
pattern = r'storepass\s*=\s*(True|False)'
replacement = f'storepass = {str(target_value).lower()}'
updated_content = re.sub(pattern, replacement, file_content)

# 写回文件
with open('booleans.py', 'w', encoding='utf-8') as f:
    f.write(updated_content)

# 同步当前运行环境中的变量值
import booleans
booleans.storepass = target_value

方案二:改用专用配置文件(推荐)

直接修改Python源码文件存在风险(比如意外破坏语法),更规范的做法是用独立的配置文件(如JSON、INI)存储开关状态。

步骤1:创建config.json配置文件

{
    "storepass": false
}

步骤2:封装配置读写函数

# config_utils.py
import json

def get_storepass():
    try:
        with open('config.json', 'r', encoding='utf-8') as f:
            config = json.load(f)
        return config.get('storepass', False)
    except FileNotFoundError:
        # 配置文件不存在时返回默认值
        return False

def set_storepass(value):
    try:
        with open('config.json', 'r', encoding='utf-8') as f:
            config = json.load(f)
    except FileNotFoundError:
        config = {}
    config['storepass'] = value
    with open('config.json', 'w', encoding='utf-8') as f:
        json.dump(config, f, indent=4)

步骤3:在业务代码中使用

# storepasswordquestion.py
from config_utils import get_storepass, set_storepass

user_choice = input("是否希望下次运行保存密码?(y/n): ").strip().lower()
set_storepass(user_choice == 'y')

# 使用配置值
storepass = get_storepass()
if storepass:
    print("下次将从.env加载密码")
else:
    print("下次将临时获取密码")

注意事项

  • 方案一中,正则表达式的写法可以兼容storepass=False、storepass = True等不同格式的赋值语句。
  • 方案二更适合生产环境,避免修改源码带来的潜在问题,也方便扩展其他配置项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:31:01