在Python中读取大型CSV文件
在Python中读取大型CSV文件
我目前正在尝试在Python 2.7中读取包含最多1百万行和200列的.csv文件(文件大小从100MB到1.6GB不等)。对于行数在30万以下的文件,我可以做到(速度很慢),但是一旦超过这个数量,就会出现内存错误。我的代码如下:
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(不确定您需要什么信息)。