批量修改2000个JSON文件Name字段编号,匹配文件名
批量修改JSON文件的Name字段编号
我有一个包含2000个JSON文件的文件夹,文件命名为1.json、2.json……2000.json。每个文件的Name字段当前为"Testname #5",需要将每个文件的Name字段编号修改为与文件名对应的数字(如1.json对应"Testname #1",2.json对应"Testname #2"等)。我已实现单个文件的修改代码,但需要批量处理的方案。
已实现的单文件处理代码:
import os import sys import fileinput x = 0; for line in fileinput.input(['1.json'], inplace=True): if line.strip().startswith('"name"'): line = '"name":"Testname #' + str(x) + '",\n' x += 1 sys.stdout.write(line)
批量处理方案
直接遍历目标文件夹内的所有JSON文件,提取文件名中的数字作为对应编号,替换字段即可。以下是优化后的批量处理代码:
import os import sys import fileinput # 设置JSON文件所在的文件夹路径,可根据实际情况修改 target_dir = "." # 遍历文件夹内的所有文件 for filename in os.listdir(target_dir): # 只处理数字命名的.json文件 if filename.endswith(".json") and filename[:-5].isdigit(): # 提取文件名中的数字编号 file_num = filename.split(".")[0] # 原地修改文件内容 for line in fileinput.input(os.path.join(target_dir, filename), inplace=True): if line.strip().startswith('"name"'): # 替换为对应编号的Name字段 line = f'"name":"Testname #{file_num}",\n' sys.stdout.write(line)
关键说明
target_dir:替换为你的JSON文件实际所在的文件夹路径,默认是脚本运行的当前目录。- 代码会自动筛选
数字+.json格式的文件,避免误处理其他无关JSON文件。 - 使用
f-string简化字符串拼接,比原代码的字符串相加更简洁易读。 - 保留了
fileinput的inplace=True特性,直接在原文件上修改,无需额外生成临时文件。
进阶优化(适配不同格式的name字段)
如果你的JSON文件中name字段存在格式差异(比如带空格:"name": "Testname #5"),可以用正则匹配来提高兼容性:
import os import sys import fileinput import re target_dir = "." for filename in os.listdir(target_dir): if filename.endswith(".json") and filename[:-5].isdigit(): file_num = filename.split(".")[0] for line in fileinput.input(os.path.join(target_dir, filename), inplace=True): # 匹配任意格式的name字段 if re.search(r'"name"\s*:', line): line = re.sub(r'"name"\s*:\s*".*?"', f'"name":"Testname #{file_num}"', line).rstrip('\n') + ',\n' sys.stdout.write(line)
注意事项
- 建议先挑选少量文件测试代码逻辑,确认无误后再批量处理所有2000个文件。
- 处理前最好备份原文件,避免意外情况导致数据丢失。
内容的提问来源于stack exchange,提问作者Shankar S Bavan
相关产品推荐
相关产品推荐

