试图逐行读取电子表格并写入excel的问题(下样本)

2024-04-26 06:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图写一些代码来减少一个非常大的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()

它会将文件移动到归档文件夹,但不会创建一个下采样版本,您知道我在这里可能会做错什么吗


Tags: 文件csvinimportforifnamesos
1条回答
网友
1楼 · 发布于 2024-04-26 06:29:12

您将在上一个文件的每次迭代中覆盖该文件。将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)

更重要的是,^{}可以替代您的计数逻辑

相关问题 更多 >

    热门问题