Python 按大小限制拆分大文件而不剪切线

Python 按大小限制拆分大文件而不剪切线,python,bash,split,Python,Bash,Split,因此,我对将相当大的文件拆分为5ig间隔感兴趣。我的目标是让所有的分区都小于5gig,并且尽可能减少分区数量 虽然我通常会使用带有大小限制的拆分,但我需要确保行保持完整(我无法按大小进行拆分) 我一直在考虑使用文件大小和行数来确定每个文件可以拆分的行数 e、 g 虽然这通常是可行的,但由于行元素的性质,如果文件段中有一个非常大的行,则文件大小仍可能超过5gig 我正在考虑使用python(它处理数字的能力要好得多,看起来也不那么粗俗),但我会放松对文件操作速度的抨击 我想知道是否有人知道bash

因此,我对将相当大的文件拆分为5ig间隔感兴趣。我的目标是让所有的分区都小于5gig,并且尽可能减少分区数量

虽然我通常会使用带有大小限制的拆分,但我需要确保行保持完整(我无法按大小进行拆分)

我一直在考虑使用文件大小和行数来确定每个文件可以拆分的行数

e、 g

虽然这通常是可行的,但由于行元素的性质,如果文件段中有一个非常大的行,则文件大小仍可能超过5gig

我正在考虑使用python(它处理数字的能力要好得多,看起来也不那么粗俗),但我会放松对文件操作速度的抨击

我想知道是否有人知道bash中有更好的替代方案


提前谢谢你

从拆分手册页:

...
-C, --line-bytes=SIZE
put at most SIZE bytes of lines per output file
...

此选项的描述可能不太明显,但似乎涵盖了您的要求:在达到大小字节之前,文件在最新可能的换行符处被拆分。

900行不算什么,您可以在其上循环。我会循环每一行,为写入当前文件的字节保留一个计数器。如果当前行超过5G,则启动一个新文件。如果线路本身超过5G,则抛出错误。(如果您必须节省内存,这将变得更复杂,但仍然可能。)Linux split有一个--lines=NUMBER选项,可以按每个输出文件的行数进行拆分。上面的数字与我实际要做的事情并不精确,他们只是提供了一个简单易懂的例子。实际上,这看起来确实能解决我的问题。谢谢你指出这一点!不幸的是,这可能会剪切行,即当它们大于
大小时。我对一个解决方案很感兴趣,不管发生什么,它都能保持线路的完整性。。。
...
-C, --line-bytes=SIZE
put at most SIZE bytes of lines per output file
...