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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:38:01