如何使用Python将目录下多个JSON文件合并为单个有效JSON文件
合并多个JSON文件为单个有效JSON的Python优化方案
首先,咱们先明确你的需求:你要把当前目录下所有.json文件里的键值对合并成一个单独的有效JSON对象,保存到本地,而且要确保最终JSON里最后一个键值对没有多余的逗号。
先看你写的代码,它其实只是在遍历文件并打印内容,还没实现合并和写入的核心功能,而且把多个语句挤在一行的写法可读性也不太好,咱们来优化一下:
优化后的解决方案
import glob import json # 初始化空字典,用来存放所有合并后的键值对 merged_data = {} # 遍历当前目录下所有.json文件 for file_path in glob.glob("*.json"): with open(file_path, 'r', encoding='utf-8') as f: # 直接加载整个文件的JSON数据,比逐行读取更可靠 file_content = json.load(f) # 把当前文件的键值对合并到总字典里(重复键会被后面的文件覆盖) merged_data.update(file_content) # 将合并后的结果写入新文件 with open('merged_result.json', 'w', encoding='utf-8') as output_file: # json.dump会自动处理格式,确保最后一个键值对没有多余逗号 json.dump(merged_data, output_file, separators=(',', ': '))
为什么这个方案更好?
- 更高效可靠:用
json.load()直接解析整个JSON文件,避免了逐行读取可能遇到的格式问题(比如JSON内容换行、多空格等),Python的json模块会帮你处理所有合法的JSON格式。 - 简洁易读:拆分了逻辑步骤,用明确的变量名和注释,后续维护起来更方便,也更适合你学习调试。
- 自动处理格式:
json.dump()的separators参数可以生成紧凑的JSON格式,而且完全符合你要求的“最后一个键值对无逗号”——它会自动判断键值对的位置,不会在最后一个后面加多余的逗号。 - 合理处理重复键:如果不同文件里有相同的键,
update()方法会用后面文件的值覆盖前面的,这是这类合并场景下的常规逻辑,如果你需要保留所有重复键的话,可以再调整逻辑。
对比原代码的不足
你的原代码只是在打印文件列表和内容,没有完成合并和写入的核心任务;而且把多个语句写在一行(比如import glob; files=[];...)虽然能运行,但可读性很差,不利于你理解代码逻辑和后续调试。
内容的提问来源于stack exchange,提问作者Magno Alberto
相关产品推荐
相关产品推荐

