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

Python读取JSON批量生成TXT,解决Windows文件名特殊字符报错问题

问题排查

你的代码存在以下几个问题:

  • 字段取值错误:你预期的文件名开头是GGB,对应JSON结构里的data['panel_info']['machine']字段,不是你代码里取的model_name(model_name的值是AIC)
  • 文件名包含Windows非法字符::这是你报错的直接原因,需要把panel_barcode里的所有冒号替换为[#]
  • 漏加board_barcode值:board_barcode是列表类型,你需要取它的第一个元素拼到文件名末尾,才能得到你预期的NoSerialNumber后缀
  • 路径转义问题:Windows路径的\在Python字符串里是转义符,建议在路径字符串前加r标记为原始字符串避免转义错误
  • 冗余代码:with open上下文管理器会自动关闭文件,不需要手动调用f.close()

修复后的单文件处理代码

import json
import os

# 路径前加r标记为原始字符串,避免转义问题
input_path = r"C:\Data\Data1\AI.json"
output_path = r"C:\index"

# 自动创建输出文件夹,不存在就新建,避免路径不存在报错
os.makedirs(output_path, exist_ok=True)

with open(input_path, encoding='utf-8') as f:
    data = json.load(f)

# 提取字段并替换非法字符
machine = data['panel_info']['machine']
panel_barcode = data['panel_info']['panel_barcode'].replace(':', '[#]')
board_barcode = data['panel_info']['board_barcode'][0]

# 拼接文件名
txt_name = f"{machine}[$]{panel_barcode}[$]{board_barcode}.txt"

# 用os.path.join拼接路径更安全,兼容不同系统
full_output_path = os.path.join(output_path, txt_name)

# 创建空文件
with open(full_output_path, 'w') as f:
    pass

批量处理版本代码

可以遍历指定根目录下所有子文件夹的JSON文件自动处理:

import json
import os

# 配置项:存放所有JSON文件的根目录、TXT文件输出目录
json_root_dir = r"C:\Data"
output_path = r"C:\index"
os.makedirs(output_path, exist_ok=True)

# 递归遍历所有子文件夹
for root, dirs, files in os.walk(json_root_dir):
    for file in files:
        # 只处理后缀为.json的文件
        if file.lower().endswith('.json'):
            json_path = os.path.join(root, file)
            try:
                with open(json_path, encoding='utf-8') as f:
                    data = json.load(f)
                # 提取处理字段
                machine = data['panel_info']['machine']
                panel_barcode = data['panel_info']['panel_barcode'].replace(':', '[#]')
                board_barcode = data['panel_info']['board_barcode'][0]
                txt_name = f"{machine}[$]{panel_barcode}[$]{board_barcode}.txt"
                full_output_path = os.path.join(output_path, txt_name)
                with open(full_output_path, 'w') as f:
                    pass
                print(f"已生成文件:{txt_name}")
            except Exception as e:
                print(f"处理文件{json_path}失败:{str(e)}")

内容的提问来源于stack exchange,提问作者Yzj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:09:02