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

2024-04-16 09:04:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前使用的csv文件大约有100k-500k行(行包含文本,最大为500mb)。你知道吗

由于我需要处理每行中的文本数据,我的目标是打开每个文件,遍历行,向每行添加两个新变量,并将行写入一个新文件(每个初始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工作得更快?你知道吗


Tags: 文件csv文本importnewoutputdatetimeas