我在一个项目中有一段代码,应该读取CSV文件并将每一行写入XLSX文件。现在当我通过命令行运行时,出现错误"argument 1 must be an iterator"。
这里是相关的代码:
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:argument 1 must be an iterator",并引用了我提供的最后一行代码。
由于它没有抱怨我第一次使用csvfile,如果我像这样做一些事情会更好吗:
csvfile = open("testdata.csv", "r")
而不是使用 with(那我在这里做错了吗)? 如果是这样的话,还有其他需要更改的地方吗?感谢任何帮助!!
csv_read = csv.reader(csvfile)
时,你已经关闭了文件。第二步的目的是什么? - mechanical_meatgcount = sum(1 for row in csv_read)
这一行,我在后面处理xlsx文件中的数据时会用到它。 - DJGrandpaJwith
语句再次打开文件。 - mechanical_meatcsvfile = open("testdata.csv", "r")
,然后在那里完成所有操作,最后再执行csvfile.close()
?听起来你是这个意思,如果我将需要的内容存储在变量中,即使文件关闭了,我也可以随时获取它们,对吗? - DJGrandpaJ