参数1必须是迭代器 - 我做错了什么?

时间:2016-02-11 21:10:54

标签: python csv iterator

我在项目中有一段代码,它们应该读取CSV文件并将每一行写入XLSX文件。现在我收到错误"参数1必须是迭代器"当我通过命令行运行时。

以下是相关代码:

import os
import openpyxl
import csv
from datetime import datetime
from openpyxl.reader.excel import load_workbook

...

plannum = 4

...

alldata_sheetname = ("All Test Data " + str(plannum))
wb = load_workbook("testingtemplate.xlsx", keep_vba=True)

...

ws_testdata = wb.get_sheet_by_name(alldata_sheetname)

...

with open("testdata.csv", 'r') as csvfile:
    table = csv.reader(csvfile)
    for row in table:
        ws_testdata.append(row)

csv_read = csv.reader(csvfile)

...

具体错误如下:" TypeError:参数1必须是迭代器",并且引用了我提供的最后一行代码。

由于我第一次使用csvfile并没有抱怨,如果我做csvfile = open("testdata.csv", "r")之类的事情而不是使用with会更好(并且是我在这里做错了什么?)如果是这样的话,还有什么我需要改变的吗?

感谢任何帮助过的人!!

1 个答案:

答案 0 :(得分:3)

到达csv_read = csv.reader(csvfile)时,您已关闭该文件。或者,您可以保持文件打开并在变量中存储所需的内容,这样您就不必迭代文件两次。 E.g:

csvfile = open("testdata.csv", "r")
table = csv.reader(csvfile)
for row in table:
    ws_testdata.append(row)
    # store what you need in variables
csvfile.close()