我尝试了一个非常简单的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
有人可以帮我吗?
答案 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
作为变量名,因为它会掩盖内置类型。这使得您的代码难以阅读,并可能导致神秘的错误。