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

0 投票
1 回答
1441 浏览
提问于 2025-04-16 19:08

有没有简单的方法可以做到这一点,而不会耗尽内存呢?

我有一个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_FILENAMESPLIT_NAME 中不一定要使用简单的文件名,你可以使用路径。

撰写回答