如何在Python外部存储bool变量并实现持久化读写及运行时修改?
Python 持久化布尔值并动态修改的实现方法
下面是几种适合小型程序的实现方案,都能满足程序退出后值保留、运行时可修改的需求:
1. 纯文本文件存储(最简单)
直接将布尔值以字符串形式存在文本文件中,读取时转换为bool类型:
# 读取外部存储的布尔值 def get_run_flag(): try: with open("run_flag.txt", "r") as f: content = f.read().strip() return content == "True" except FileNotFoundError: # 文件不存在时返回默认值,可按需修改 return False # 修改并保存布尔值 def set_run_flag(value): with open("run_flag.txt", "w") as f: f.write("True" if value else "False") # 使用示例 if get_run_flag(): print("执行布尔值为True时的操作") else: print("执行布尔值为False时的操作") # 运行时动态修改 set_run_flag(True)
2. JSON 文件存储(易扩展)
如果以后需要添加更多配置项,用JSON格式更合适,结构清晰且易于扩展:
import json CONFIG_PATH = "app_config.json" def get_run_flag(): try: with open(CONFIG_PATH, "r") as f: config = json.load(f) return config.get("run_flag", False) except (FileNotFoundError, json.JSONDecodeError): # 文件不存在或格式错误时返回默认值 return False def set_run_flag(value): # 先读取现有配置,没有则新建空字典 try: with open(CONFIG_PATH, "r") as f: config = json.load(f) except (FileNotFoundError, json.JSONDecodeError): config = {} config["run_flag"] = value with open(CONFIG_PATH, "w") as f: json.dump(config, f, indent=2) # 使用示例 current_flag = get_run_flag() if current_flag: # 编写True对应的操作逻辑 pass else: # 编写False对应的操作逻辑 pass # 动态修改值 set_run_flag(False)
3. INI 配置文件存储(规范配置)
如果需要更标准的配置格式,可使用Python内置的configparser模块,适合多节多配置的场景:
import configparser CONFIG_PATH = "app_settings.ini" def get_run_flag(): config = configparser.ConfigParser() config.read(CONFIG_PATH) return config.getboolean("AppSettings", "run_flag", fallback=False) def set_run_flag(value): config = configparser.ConfigParser() config.read(CONFIG_PATH) if not config.has_section("AppSettings"): config.add_section("AppSettings") config.set("AppSettings", "run_flag", str(value)) with open(CONFIG_PATH, "w") as f: config.write(f) # 使用示例 if get_run_flag(): print("执行True分支操作") else: print("执行False分支操作") # 动态修改 set_run_flag(True)
方案选择建议
- 仅需存储单个布尔值:选纯文本文件,最轻量化
- 未来可能添加更多配置项:选JSON文件,扩展方便
- 需要规范的多节配置:选INI配置文件,符合传统配置文件格式
内容的提问来源于stack exchange,提问作者Rainer
相关产品推荐
相关产品推荐

