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

Python循环按顺序处理JSON文件解决image字段赋值错误问题

问题根因

  • os.listdir() 返回的文件名顺序由操作系统文件系统规则决定,不会默认按文件名的数字大小排序,运行顺序不可控
  • 原有代码没有从当前处理的JSON文件名中提取对应编号,而是使用了循环自增的计数变量,直接导致文件和编号错配

修复方案

解决思路是直接从每个JSON文件的文件名中提取对应数字作为图片URL的后缀,完全不依赖文件遍历顺序,从根源避免错配。修正后的代码如下:

import json
import os

folderPath = r'/path/FolderWithJson/'

for filename in os.listdir(folderPath):
    # 跳过非JSON格式的文件
    if not filename.endswith(".json"):
        continue
    # 提取文件名中的数字编号:去掉.json后缀后转整数
    file_num = int(filename.rsplit('.', 1)[0])
    file_path = os.path.join(folderPath, filename)

    # 读取原有JSON内容
    with open(file_path, 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    # 修改image字段
    data['image'] = f"https://weburlofnewimage/{file_num}.png"

    # 直接覆盖写入新内容,无需先删除原文件
    with open(file_path, 'w', encoding='utf-8') as f:
        json.dump(data, f, indent=4)
    
    print(f"处理完成:{filename},对应图片URL编号为{file_num}")

额外优化说明

  • 去掉了原有先删除文件再新建写入的冗余逻辑,w模式打开文件会直接覆盖原有内容,操作更安全
  • 新增了编码声明,避免不同系统下读写JSON出现乱码
  • 所有匹配逻辑完全和文件名绑定,不管遍历顺序是什么样,都不会出现编号错配的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:54:02