在Python2.7中,读取大文件会消耗太多内存
我使用.readline逐行解析文件,因为我需要 找出将数据提取到列表中的开始位置和结束位置 指向暂停提取,然后重复,直到文件结束。 我要读取的文件的格式如下: blabla... useless.... ... /sign/ data block(e.g. 10 cols x 1000 rows) ... blank line /sign/ data block(e.g. 10 cols x 1000 rows) ... blank line ... EOF 运行结果是读取一个500米的文件会消耗几乎2GB的RAM,即 想不出来,谁来帮忙!在Python2.7中,读取大文件会消耗太多内存,python,Python,我使用.readline逐行解析文件,因为我需要 找出将数据提取到列表中的开始位置和结束位置 指向暂停提取,然后重复,直到文件结束。 我要读取的文件的格式如下: blabla... useless.... ... /sign/ data block(e.g. 10 cols x 1000 rows) ... blank line /sign/ data block(e.g. 10 cols x 1000 rows) ... blank line ... EOF 运行结果是读取一个
非常感谢 代码中有相当多的非pythonic歧义行。我不确定,但认为您可以先按以下方式修改代码,然后根据内存使用情况再次检查代码:
data=[]
with open('myfile','r') as f:
for line in f:
# find the extract beginning - think you can add here more parameters to check
if not line.strip() or line.startswith('/sign/'):
continue
data.append(["%2.6E" % float(x) for x in line.strip().split()])
但我认为这段代码也会占用相当多的内存——不过,如果你真的不需要存储从文件中读取的所有数据,你可以修改代码以使用生成器表达式并逐行处理文件数据——我想这会节省你的内存 请检查您的密码。它有不同的格式、语义和语法问题。append来自哪里?。还要考虑使用标准Python缩进4个空格,不要在同一行上写多个语句。还可以显示典型数据块的几行吗?
data=[]
with open('myfile','r') as f:
for line in f:
# find the extract beginning - think you can add here more parameters to check
if not line.strip() or line.startswith('/sign/'):
continue
data.append(["%2.6E" % float(x) for x in line.strip().split()])