如何将一个巨大的文件拆分成多个文件?

时间:2011-06-08 05:27:03

标签: python linux file unix memory

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

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

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

2 个答案:

答案 0 :(得分:0)

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中的纯文件名;你可以使用路径。

答案 1 :(得分:-1)

处理千兆字节文件时,包含数百万个条目的数组;尽量不要使用脚本语言。如果你可以运行一个C ++代码,那将很容易,没有任何问题。