读取csv文件并将信息写入新的csv文件的最快方法

时间:2019-07-18 07:32:47

标签: python python-3.x pandas csv

我目前正在处理具有约100k-500k行(行包含文本且最大500mb)的csv文件。

由于我需要在每一行中处理文本数据,因此我的目标是打开每个文件,遍历各行,向每行添加两个新的变量,并将这些行写入一个新文件(每个初始csv文件得到一个新的输出文件)。

我的首要考虑是不先将所有行读入内存,然后将它们随后写入新文件,而是一步完成所有操作:

import glob
import csv
from datetime import datetime

all_initial_files = glob.glob('/path/to/my/files/*.csv')

for file in all_initial_files:
    output_file = create_new_path(file)
    with open(output_file, 'w') as w:
        writer = csv.DictWriter(w, some_header)
        writer.writeheader()

    with open(output_file, 'a') as f_o:
        writer = csv.writer(f_o)
        with open(file, 'r') as f_i:
            data = csv.reader(f_i)
            for i,row in enumerate(data):
                new_var1,new_var2 = process_row(row)
                row = row.extend([new_var1,new_var2])
                writer.writerow(row)
                print(datetime.now().strftime('%d.%m.%Y, %H:%M:%S:'),f'{file}: Processed row #{i}.')

但是,我遇到了脚本变慢的情况,它在文件中处理的行越多(约30k行,您会注意到脚本处理单行所花费的时间更长)。

因此,我的问题是:python中读取csv文件,处理/添加信息并写入新csv文件的最佳/最快方法是什么?也许有一个涉及pandas的解决方案工作更快?

0 个答案:

没有答案