【问题标题】:automatically limit rows per file and create new files自动限制每个文件的行数并创建新文件
【发布时间】:2021-03-15 16:47:38
【问题描述】:

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

【问题讨论】:

  • 你用什么来创建 csv?使用 csv 库的 Pandas 或您自己的代码?为什么要限制每个文件的行数?
  • 您还需要使用 CSV 吗?这是一种丑陋的数据格式
  • 按行数限制文件?还是按整体大小限制文件?你是如何创建这个文件的?一口气还是在不同时间追加?
  • 是,按行数限制文件
  • 我自己使用csv库的代码

标签: python csv web-scraping web-crawler


【解决方案1】:

一种简单的方法是使用一个类来跟踪您的行并在需要时写入新文件(例如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 行。显然,您可以根据需要进行调整。

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

【讨论】:

    猜你喜欢
    • 2018-05-12
    • 2023-02-24
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多