尝试逐行读取电子表格并写入excel(下采样)

我正在尝试编写一些代码来缩减一个非常大的Excel文件。 它需要精确地复制前4行,然后在第5行开始每40行。 我现在有这个

import os import string import shutil import datetime folders = os.listdir('./') names = [s for s in folders if "csv" in s] zips = [s for s in folders if "zip" in s] for folder in names: filename = folder shutil.move(folder, './Archive') with open(filename) as f: counter = 0 for line in f: counter += 1 f_out = open('./DownSampled/' + folder + '.csv', 'w') if counter < 5: f_out.write(line) elif (counter+35) % 40 == 0: f_out.write(line) f_out.close() 

它将文件移动到存档文件夹,但不会创build一个缩减版本,有什么我可以在这里做错了什么想法?

您在覆盖前一个文件的每个迭代中的文件。 将这个open(...)移出for循环:

 with open(filename) as f, open('./DownSampled/' + folder + '.csv', 'w') as f_out: for i, line in enumerate(f): if i < 5: f_out.write(line) elif (i+35) % 40 == 0: f_out.write(line) 

更重要的是, enumerate可以取代你的计数逻辑。