【问题标题】:How do I split a huge file into multiple files?如何将一个大文件拆分为多个文件?
【发布时间】:2011-06-08 05:27:02
【问题描述】:

在不耗尽内存的情况下,最简单的方法是什么?

我有一个 9GB 的文件,有 1 亿行(每行都是一个 URL)。

如何将其拆分为 X 文件?我试过for f in fileinput.input('...'),但由于某种原因它被“杀死”了。

【问题讨论】:

标签: python linux file unix memory


【解决方案1】:
from __future__ import with_statement

YOUR_FILENAME= 'bigfile.log'
SPLIT_NAME= 'bigfile.part%05d.log'
SPLIT_SIZE= 10000 # lines
SPLITTER= lambda t: t[0]//SPLIT_SIZE

import itertools as it

with open(YOUR_FILENAME, "r") as input_file:
    for part_no, lines in it.groupby(enumerate(input_file), SPLITTER):
        with open(SPLIT_NAME % part_no, "w") as out:
             out.writelines(item[1] for item in lines)

将正确的文件名存储为YOUR_FILENAME。决定每个部分将有多少行 (SPLIT_SIZE)。确定输出名称 (SPLIT_NAME)。运行。显然,您不仅限于YOUR_FILENAMESPLIT_NAME 中的纯文件名;你可以使用路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2019-10-17
    相关资源
    最近更新 更多