如何用python处理非常大的文件?

如何用python处理非常大的文件?,python,Python,这个问题是早些时候提出的,但已经很久了。我目前正试图打开一个非常大的文件(20GB)来处理这些东西 我正在使用: read_path = '../text/' time = 3600 data = open(read_path+'genomes'+str(time)).read().replace(',','\n').replace('\n','') 当我在同一个目录(genomes1000)中选择一个较小的文件时,它可以正常工作,但是当我将时间更改为与较大文件匹配的时间时,我会得到错误 确切

这个问题是早些时候提出的,但已经很久了。我目前正试图打开一个非常大的文件(20GB)来处理这些东西

我正在使用:

read_path = '../text/'
time = 3600
data = open(read_path+'genomes'+str(time)).read().replace(',','\n').replace('\n','')
当我在同一个目录(genomes1000)中选择一个较小的文件时,它可以正常工作,但是当我将时间更改为与较大文件匹配的时间时,我会得到错误

确切的错误消息是:

Tempo:analytics scottjg$ python genomeplot.py 
Traceback (most recent call last):
  File "genomeplot.py", line 27, in <module>
    data = open(read_path+'genomes'+str(time)).read().replace(',','\n').replace('\n','')
OSError: [Errno 22] Invalid argument
Thoughts?
Tempo:analytics scottjg$python genomeplot.py
回溯(最近一次呼叫最后一次):
文件“genomeplot.py”,第27行,在
data=open(read_path+'genomes'+str(time)).read().replace(',','\n').replace('\n','')
OSError:[Errno 22]参数无效
思想?

您的代码将文件的全部内容读取到内存中:

open(read_path+'genomes'+str(time)).read()

我怀疑你没有足够的内存来处理这个问题,这可能是失败的原因。在循环中逐行处理并调用readline不是更好吗?

那么错误是什么?你是说像中一样的Errno 22吗?似乎表明该文件不存在,请检查路径是否准确。您是否真的试图一次性将20GB的文件读入内存?是否可以打印
read\u path+“genomes”+str(time)
,并确保该文件存在?要将20GB读入内存,您至少需要相同数量的RAM,并且需要进行2次替换,他们会复制每个字符串,所以你最终需要60GB的ram,更不用说处理如此巨大的字符串了……我想这可能就是问题所在。到目前为止,我一直很懒,因为我的文件变小了。如果路径与文件匹配,我会说这就是问题所在,即使我不希望看到与此相关的错误22。