gpt4 book ai didi

python - 使用python拆分大文件

转载 作者:太空狗 更新时间:2023-10-29 19:33:24 25 4
gpt4 key购买 nike

我在尝试拆分大文件(例如,大约 10GB)时遇到了一些问题。基本思想是简单地读取行,并将每行分组,比如 40000 行到一个文件中。但是有两种“读取”文件的方法。

1) 第一个是一次读取整个文件,并将其制成一个列表。但这将需要将整个文件加载到内存中,这对于太大的文件来说是痛苦的。 (我想我以前问过这样的问题)在 python 中,我尝试过一次读取整个文件的方法包括:

input1=f.readlines()

input1 = commands.getoutput('zcat ' + file).splitlines(True)

input1 = subprocess.Popen(["cat",file],
stdout=subprocess.PIPE,bufsize=1)

好吧,那么我可以通过以下方式轻松地将 40000 行分组到一个文件中:list[40000,80000] 或 list[80000,120000]或者使用列表的好处是我们可以很容易地指向特定的行。

2)第二种方式是逐行读取;读取时处理该行。那些读取的行不会保存在内存中。示例包括:

f=gzip.open(file)
for line in f: blablabla...

for line in fileinput.FileInput(fileName):

我确定对于 gzip.open,这个 f 不是一个列表,而是一个文件对象。似乎我们只能逐行处理;那么我该如何执行这个“拆分”工作呢?如何指向文件对象的特定行?

谢谢

最佳答案

NUM_OF_LINES=40000
filename = 'myinput.txt'
with open(filename) as fin:
fout = open("output0.txt","wb")
for i,line in enumerate(fin):
fout.write(line)
if (i+1)%NUM_OF_LINES == 0:
fout.close()
fout = open("output%d.txt"%(i/NUM_OF_LINES+1),"wb")

fout.close()

关于python - 使用python拆分大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com