在不耗尽内存的情况下执行此操作的最简单方法是什么?
我有一个 9GB 的文件,其中有 1 亿行(每行都是一个 URL)。
如何将其拆分为 X 个文件?我尝试了 for f in fileinput.input('...')
,但由于某种原因它被“杀死”了。
最佳答案
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
中的纯文件名;您可以使用路径。
关于python - 如何将一个大文件分割成多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6274551/