Python写入JSON文件时内容重复、换行符失效问题求助
问题分析与修复
问题原因拆解
内容重复
- 错误使用
text += text + line.strip(),每次循环都会把当前text内容复制一遍再追加新行,导致内容重复翻倍。 - 分两次打开日志文件,第一次仅记录最后一条
Hostname:行;第二次循环中每次匹配到Found controller就写入文件,且每次都基于错误累加的text操作,最终造成重复内容。
- 错误使用
换行异常
json.dump()写入字符串时会自动转义特殊字符(比如\n会被转成\\n),直接查看JSON文件会看到\n文本而非实际换行。- 用带缩进的三引号添加换行,会把缩进空格带入字符串,导致输出出现多余缩进。
修复后的代码
import json json_file_name = 'HOSTANDIPINFO.json' target_lines = [] # 一次性读取日志,收集所有需要的行 with open('xdate_debug.log', 'r') as log_file: for line in log_file: clean_line = line.strip() # 同时匹配Hostname和Found controller的行 if 'Hostname:' in clean_line or 'Found controller' in clean_line: print(clean_line) target_lines.append(clean_line) # 用换行符拼接所有行 result_text = '\n'.join(target_lines) # 方案1:直接写入纯文本文件(完全符合你要的换行格式) with open('HOSTANDIPINFO.txt', 'w') as txt_file: txt_file.write(result_text) # 方案2:写入JSON文件(存储为带换行的字符串,读取时需用json.load解析) with open(json_file_name, 'w') as json_file: json.dump(result_text, json_file)
修复说明
- 用列表收集所有目标行,最后通过
'\n'.join()拼接,既避免重复累加问题,又保证换行正确。 - 若不需要JSON格式,优先用方案1写入纯文本,直接得到每行独立显示的效果。
- 若必须用JSON存储,写入的字符串包含
\n,后续用json.load()读取后打印,会自动解析为换行。
内容的提问来源于stack exchange,提问作者Matthew Connor
相关产品推荐
相关产品推荐

