最佳答案
我正在尝试读取。Python 2.7中的 csv 文件,最多有100万行,200列(文件范围从100mb 到1.6 gb)。我可以对低于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 内存,运行64位 Windows7,处理器是3.40 GHz (不确定你需要什么信息)。