试图将 .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))
我正在尝试将 .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))