如何将大文件拆分成多个文件?
有没有简单的方法可以做到这一点,而不会耗尽内存呢?
我有一个9GB的文件,里面有1亿行(每一行都是一个网址)。
我该如何把这个文件分成X个小文件呢?我试过用for f in fileinput.input('...')
,但不知道为什么它被“杀掉”了。
1 个回答
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_FILENAME
和 SPLIT_NAME
中不一定要使用简单的文件名,你可以使用路径。