我目前正在尝试使用Python 2.7从.csv文件中读取数据,其中包含最多1百万行、200列的数据(文件大小在100MB到1.6GB之间)。对于行数小于300,000的文件,我可以做到这一点(但速度非常慢),但是一旦超过这个范围,就会出现内存错误。我的代码如下:
def getdata(filename, criteria):
data=[]
for criterion in criteria:
data.append(getstuff(filename, criteron))
return data
def getstuff(filename, criterion):
import csv
data=[]
with open(filename, "rb") as csvfile:
datareader=csv.reader(csvfile)
for row in datareader:
if row[3]=="column header":
data.append(row)
elif len(data)<2 and row[3]!=criterion:
pass
elif row[3]==criterion:
data.append(row)
else:
return data
在 getstuff 函数中使用 else 子句的原因是,所有符合条件的元素将在 csv 文件中一起列出,因此当超过这些元素时,我会离开循环以节省时间。
我的问题是:
如何使其能够处理更大的文件?
有什么方法可以加快速度吗?
我的计算机搭载8GB RAM,运行64位Windows 7系统,处理器为3.40 GHz(不确定您需要哪些信息)。