自动限制每个文件的行数并创建新文件 [英] automatically limit rows per file and create new files

查看:26
本文介绍了自动限制每个文件的行数并创建新文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am working on a script that will write a massive amount of data to a .csv file. I would like to automatically limit rows per file and create new files.

推荐答案

一个简单的方法是使用一个类来跟踪您的行并在需要时写入新文件(例如 self.max_row)

A simple approach would be to use a class to keep track of your rows and write to a new file whenever needed (e.g. self.max_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)

这将创建格式为 output_0001.csv 的输出文件名,每个文件包含 10 行.显然,您可以根据需要进行调整.

This would create output filenames of the form output_0001.csv containing 10 rows per file. Obviously you can adjust this as needed.

您也可以改用 csv.DictWriter() 并为每一行传递一个字典.

You could also use a csv.DictWriter() instead and pass a dictionary for each row.

这篇关于自动限制每个文件的行数并创建新文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆