同时分别打开、写入和保存多个文件

Simultaneously Open, write and save multiple files separately

我创建了一个 python 代码来打开多个文件并编辑它们,最后分别保存每个文件

第一个出来的文件没问题,但之后其他文件的大小都一个一个增加

import json
import os
from datetime import datetime
os.chdir('C:\Users\user1\Desktop\Test')
list_Files = []

date = datetime.now()
result = []
counter = 0
cnt = 0
for single_file in os.listdir('C:\Users\user1\Desktop\Test') :
    list_Files.append(single_file)
    print(single_file)
    with open(single_file, encoding='utf-8') as fn:
        for line in fn.readlines():
            counter+=1
            result.append(json.loads(line))                  
    cnt+=1
    print(cnt)
    json_file = 'C:\Users\user1\Desktop\Out\tst_'+f"{str(single_file)}{cnt}"'.json'
    with open(json_file, 'w') as outfile:
        json.dump(result, outfile)

您在遍历所有文件之前初始化了结果数组。在遍历你的文件时,你附加了结果数组,使这个数组更长 result.append(json.loads(line))。然后,在文件循环中将结果数组写入 json 文件。因此,每个新的 json 文件都会收到一个更长的结果数组,因此文件大小也会更大。

如果你 initialize/reset 你的文件循环中的结果数组你很好。请参阅下面的示例代码。

import json
import os
from datetime import datetime
os.chdir('C:\Users\user1\Desktop\Test')
list_Files = []

date = datetime.now()
# result = [] removed the results array here
counter = 0
cnt = 0
for single_file in os.listdir('C:\Users\user1\Desktop\Test') :
    result = [] # initialize/reset the results array here
    list_Files.append(single_file)
    print(single_file)
    with open(single_file, encoding='utf-8') as fn:
        for line in fn.readlines():
            counter+=1
            result.append(json.loads(line))                  
    cnt+=1
    print(cnt)
    json_file = 'C:\Users\user1\Desktop\Out\tst_'+f"{str(single_file)}{cnt}"'.json'
    with open(json_file, 'w') as outfile:
        json.dump(result, outfile)