Python显示内存错误

时间:2018-02-13 19:22:59

标签: python-2.7

我尝试了一个非常简单的python脚本,用于在每行中添加某些字符串,代码为:

import csv
List = []
list = []
csv_reader = csv.reader(open('moz_press_IDE_mdoc.csv'))
i = 0
for row in csv_reader:
    List.append(list)
    j = 1
    for num in row:
        tmp = str(i) + ':'
        num = tmp + num
        j += 1
        List[i].append(num)
    i += 1

out = open('newCSV.csv', 'w')
csv_writer = csv.writer(out)
csv_writer.writerow(List)
out.close()

显示错误消息:

Traceback (most recent call last):
  File "preprocess.py", line 19, in <module>
    csv_writer.writerow(List)
MemoryError

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

这一行

List.append(list)

不符合您的想法。它附加了对现有变量的新参考。

相反,写一下

List.append([])

因为(我认为)你想要一个新的空列表,而不是你在前一个循环迭代中操作的那个的新引用。在将List传递给csv.writer()之前打印list以查看差异。

并且不要使用#Specify folder name: FOLDER=`<FolderName>` #Get list of all workflows: WORKFLOWS=`./pmrep listobjects -o workflow -f ${FOLDER} | grep workflow | sed 's/workflow//g'` for WORKFLOW in $WORKFLOWS; do echo "[INFO]: Processing Workflow ${WORKFLOW}" # export single workflow ./pmrep objectexport -o workflow -f $FOLDER -n $WORKFLOW -m -s -b -r -u ${EXPORTDIR}/${FOLDER}_${WORKFLOW}.xml done 作为变量名,因为它会掩盖内置类型。这使得您的代码难以阅读,并可能导致神秘的错误。