在Python中读取大型CSV文件

14 浏览
0 Comments

在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文件中连在一起列出,所以当我跳过它们时,我会离开循环以节省时间。

我的问题是:

  1. 我如何能够使它与更大的文件一起工作?
  2. 有没有办法让它运行得更快?

我的电脑有8GB的RAM,运行64位的Windows 7,处理器为3.40 GHz(不确定您需要什么信息)。

0