Python批量转换目录下JSON为TXT文件的报错代码如何修正
报错原因
pandas的read_json方法不支持*通配符批量匹配文件,代码中带通配符的路径会被识别为单个不存在的文件路径,直接触发文件找不到的报错- 写路径时在
*前后、字符串首尾加了多余空格,会进一步导致路径解析异常 - 输出路径直接写带
*的通配符没有实际逻辑,程序不会自动匹配原文件名生成对应TXT文件 - 默认
to_csv是逗号分隔格式,直接改后缀为txt可能出现内容排版混乱的问题
修改方案
用glob库遍历目录下所有JSON文件,逐个读取后生成同名TXT文件即可,修改后代码如下:
import pandas as pd import glob import os # 配置JSON文件所在目录,不要加多余空格 target_dir = "/media/New Volume/a3d/pdb/json_parser/" # 匹配目录下所有后缀为.json的文件 json_file_list = glob.glob(os.path.join(target_dir, "*.json")) for json_path in json_file_list: # 读取单个JSON文件 df = pd.read_json(json_path) # 生成同名TXT文件路径 txt_path = os.path.splitext(json_path)[0] + ".txt" # 导出为TXT,这里用制表符分隔保证可读性,可按需调整分隔符 df.to_csv(txt_path, sep="\t", index=False) print(f"已完成转换:{os.path.basename(json_path)}")
补充说明
- 如果待转换的JSON存在多层嵌套结构,
pd.read_json可能无法直接解析为规整表格,需要先对JSON做扁平化处理再转存 - 代码中
sep="\t"为制表符分隔配置,如果需要其他分隔格式可自行修改:要逗号分隔就删掉sep参数用默认值,要空格分隔就写sep=" " - 运行前确认对目标目录有读写权限,避免出现权限不足无法写入的问题
内容的提问来源于stack exchange,提问作者anita
相关产品推荐
相关产品推荐

