试图将 .csv 文件加载到几个不同的数组中,但 python 给我一个 'out of memory' 错误

attempting to load .csv file into several different arrays but python gives me an 'out of memory' error

我正在尝试将 .csv 文件读取到 7 个不同的数组中。

第一个数组用于列名,并采用 csv 文件的前 6 个值,因为列名位于开头。

在数组中记录了这 6 个名称后,(应该)过渡到读取 csv 文件的行并将每列的值存储在自己的数组 IE 中,名为 names 的列有自己的数组,并且接下来的 5 个以此类推。

当我尝试 运行 这段代码时,它给我一个 'out of memory' 错误。现在 .csv 文件非常小 (1kb) 并且绝对不应该给我这个错误 (运行ning 16GB of 2333mhz RAM)

代码:

 for line in data:
i = 0
counter = 0
# Split the line into its six values
seven = line.split(",")
# And append them (converted if necessary) to their arrays
while i < 6:
      array1.append(seven[counter])
      i + 1
      counter + 1
counter = 0
i = 0
while i < 60:

      array2.append(seven[counter])
      i + 1
      array3.append(float(seven[counter]))
      i + 1
      array4.append(float(seven[counter]))
      i + 1
      array5.append(float(seven[counter]))
      i + 1
      array6.append(float(seven[counter]))
      i + 1
      array7.append(float(seven[counter]))
      i + 1
      counter + 1
# And close the file
data.close

错误发生在

array1.append(seven[counter])

报错如下我的IDE

"The error java.lang.OutOfMemoryError has occured"

Python 有一个方便的 csv 模块,可以让您更轻松地完成所有这些工作。我建议使用 DictReader class,它会自动计算出第一行的字段名称,然后是 returns 字典。不要创建七个单独的列表,那只会自找麻烦。

import csv
data = []
with open('myfile.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        data.append(row)

# Accessing the 'name' field from row 32:
print data[32]['name']

使用 with 语句使您不必手动调用 .close()

您可以通过调用 list 构造函数使其更加简洁:

import csv
with open('myfile.csv') as csvfile:
    data = list(csv.DictReader(csvfile))