首页 > 解决方案 > 如何使用python在多个csv文件中写入数据块

问题描述

我有一些巨大的数据,比如一个文件中有 100000 行,我想将这些数据写入 CSV 文件,但我想要一个只能包含 20000 行的 CSV 文件,而其他 20000 行写入另一个 CSV 文件,

在这种方法中,我需要 5 个不同的 CSV,每个包含 20000 行。并且文件的命名应该是。

csv_file1.csv
csv_file2.csv
csv_file3.csv
csv_file4.csv
csv_file5.csv

如果数据是 100001,那么最后一行应该写入另一个 CSV 文件。一个 CSV 文件的数据限制仅为 20000。

我试过这样:

while number_of_line != 20000:  
    with open(csv_file, 'w') as csvfile:
        fieldnames = defile_field
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for row in data:
            writer.writerow({"data":row})

标签: pythonpython-3.xlistcsv

解决方案


一种可能的方法是对从原始文件获取数据的 csv 文件使用循环:

with open('orig.csv') as fd:
    rd = csv.DictReader(fd)
    num = 1
    cont = True
    while cont:
        with open('cvs_file{}.csv'.format(i), 'w', newline='') as fdout:
            wr = cvs.DictWriter(fdout, fieldnames=rd.fieldnames)
            wr.writeheader()
            for i in range(20000):       # max rows per file
                try:
                    row = next(rd)
                    wr.writerow(row)
                except StopIteration:
                    cont = False
                    break
        num += 1

推荐阅读