在Python2.7中,读取大文件会消耗太多内存

在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 运行结果是读取一个

我使用.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,即 想不出来,谁来帮忙!
非常感谢

代码中有相当多的非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()])