如何用字典值修改文本文件并保留[items]类配置标题
保留配置文件标题行的键值替换方案
你的代码跳过了所有不含=的标题行(如[items]),最终重构内容时也未还原这些结构,同时打乱了原文件的行顺序。要保留原配置结构,正确的做法是逐行处理文件内容,仅修改目标键值对,其余行(包括标题、空行)完全保留。
修改后的代码
my_dict = {'colors': 'green, black', 'animals': 'donkey, tigers'} # 读取原文件所有行 with open('myfile.txt', 'r') as file: lines = file.readlines() processed_lines = [] for line in lines: # 保留空行和标题行(带[]的行) stripped_line = line.strip() if not stripped_line or (stripped_line.startswith('[') and stripped_line.endswith(']')): processed_lines.append(line.rstrip('\n')) continue # 处理键值对行 if '=' in line: # 只分割第一个=,避免值中包含=的情况 key_part, value_part = line.split('=', 1) key = key_part.strip() if key in my_dict: # 替换值,保持原行的格式(如=前后的空格) new_line = f"{key_part.strip()} = {my_dict[key]}" processed_lines.append(new_line) else: # 不修改,保留原行内容 processed_lines.append(line.rstrip('\n')) else: # 其他非标题非键值对的行,直接保留 processed_lines.append(line.rstrip('\n')) # 将处理后的内容写回文件 with open('myfile.txt', 'w') as file: file.write('\n'.join(processed_lines) + '\n')
关键说明
- 保留原结构:逐行遍历文件,直接保留标题行、空行,不破坏原配置的分段结构
- 安全分割键值对:用
split('=', 1)只分割第一个=,避免值中包含=时出错 - 精准替换:仅对
my_dict中存在的键进行值替换,其余键值对完全保留原内容 - 格式一致性:统一处理换行符,避免出现多余空行或丢失文件结尾的换行
内容的提问来源于stack exchange,提问作者magicsword
相关产品推荐
相关产品推荐

