提问者:小点点

自动限制每个文件的行并创建新文件


我正在编写一个脚本,它将把大量数据写入一个数据库。csv文件。我想自动限制每个文件的行数并创建新文件。


共1个答案

匿名用户

一种简单的方法是使用类跟踪行,并在需要时写入新文件(例如,self.max\u row

例如:

import csv

class MyCSV:
    def __init__(self):
        self.max_row = 10
        self.cur_row = 0
        self.file_number = 0
        self.file_handle = None
        
    def write_row(self, row):
        if self.cur_row >= self.max_row or self.file_handle == None:
            self.cur_row = 0
            self.file_number += 1
            
            if self.file_handle:
                self.file_handle.close()
                
            self.file_handle = open(f'output_{self.file_number:04}.csv', 'w', newline='')
            self.csv_handle = csv.writer(self.file_handle)
            
        self.csv_handle.writerow(row)
        self.cur_row += 1


my_csv = MyCSV()

for row in range(1000):   # create some simulated rows
    output_row = [row, "value1", "value2"]
    my_csv.write_row(output_row)

这将创建每个文件包含10行的形式output_0001.csv的输出文件名。显然你可以根据需要调整这个。

您还可以使用csv。而不是DictWriter(),并为每行传递字典。