使用python连接大(> 100MB)多个(例如10个)csv文件

问题描述 投票:0回答:1

我有12个结构相同的大型csv文件。我想将所有的csv文件合并为一个csv文件。不要重复标题。现在,我以如下方式使用shutil

import shutil
import time
csv_files = ['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv', 'file5.csv', 'file6.csv']

target_file_name = 'target.csv';
start_time = time.time()
shutil.copy(csv_files[0], target_file_name)
with open(target_file_name, 'a') as out_file:
    for source_file in csv_files[1:]:
        with open(source_file, 'r') as in_file:
            in_file.readline()
            shutil.copyfileobj(in_file, out_file)
            in_file.close()
    out_file.close()
print("--- %s seconds ---" % (time.time() - start_time))

编辑

[当我在终端中尝试time cat file[1-4].csv > BigBoy命令时,得到以下输出。0.08s user 4.57s system 60% cpu 7.644 total。cat命令花费了大约4.5秒,而Python程序花费了17.46秒。我使用了4个csv文件,每个文件大小为116MB。

我想知道,如果Python中还有其他方法,可以更有效地处理这些情况。您可以从here下载大型csv文件。

python csv concatenation large-files
1个回答
2
投票

最好使用csvkit中的csvstack。还有很多其他东西可以从控制台使用csv文件。

csvstack file1.csv file2.csv ...
© www.soinside.com 2019 - 2024. All rights reserved.