python - 如何将一个大文件分割成多个文件?

标签 python linux file unix 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)。确定输出名称 (SPLIT_NAME)。运行。显然,您不限于使用 YOUR_FILENAMESPLIT_NAME 中的纯文件名;您可以使用路径。

关于python - 如何将一个大文件分割成多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6274551/

相关文章:

linux - 使用 SIGKILL 杀死父进程和子进程

c - 如何在 C 中一次性提供第一个输入文件的输出作为第二个输入文件?

Python:将以特定行为边界的 block 复制到新文件

python - 使用 Google 自定义搜索 API 时为 "daily limit exceeded"

python - 将一列中的值替换为另一列的特定实例

linux - 用于检查多个正在运行的进程的 Bash 脚本

php - 将 iPhone HTTP 请求发送到 Apache PHP 网络服务器

ios - 如何在iOS上的react-native中创建原生文件?

python - 从字典内的列表内的字典中获取数据

Python Xlsxwriter 无法正常工作