繁体   English   中英

如何将一个大文件拆分为多个文件?

[英]How do I split a huge file into multiple files?

在不用完 memory 的情况下,最简单的方法是什么?

我有一个 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 )。 确定 output 名称 ( SPLIT_NAME )。 运行。 显然,您不仅限于YOUR_FILENAMESPLIT_NAME中的普通文件名; 你可以使用路径。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM