迭代器应该返回字符串,而不是列出csv.reader的错误



此代码在标题中显示错误。请帮帮我。我编写了以下代码以写入csv文件,从另一个文件读取输入,但这显示了错误。当我将"r"更改为"rb"时,它会显示"迭代器应返回字节"错误。

错误>回溯(最近一次调用(: 文件 "C:/Users/abhirav.sati/Downloads/salesdata.py",第 34 行,在 csv_reader(csvReader,path( 文件"C:/Users/abhirav.sati/Downloads/salesdata.py",第 11 行,csv_reader 对于读取中的行: _.csv。错误:迭代器应返回字符串,而不是列表(您是否在文本模式下打开了文件?

import csv
def csv_reader(fileobj,path):
read=csv.reader(fileobj,delimiter=',')
with open(path, "wt") as csv_file:
write=csv.writer(csv_file, delimiter=',')
i=1
for row in read:
if(i==1):
write.writerow(",".join(row))
i=2
continue
if(row[3]=="Trade"):
continue
else:
if(row[6]==NULL):
r=[row[0],row[0],"A,",row[8],row[9],row[0]]
#r=row[0]+row[0]+"A,"+row[8]+row[9]+row[0]
write.writerow(r)
else:
r=[row[0],row[0],"B,",row[6],row[7],row[0]]
#r=row[0]+row[0]+"A,"+row[8]+row[9]+row[0]
write.writerow(r)
if __name__ == "__main__":
path="sales.csv"
csv_path = "FlowEdge-TRTH-Time_Sales.csv"
f_obj  = open(csv_path, "r")
data=csv.reader((line.replace('','') for line in f_obj), delimiter=",")
csv_reader(data,path)

您的代码正在对另一个csv.reader对象应用csv.reader。仔细查看您的__main__csv_reader函数,以确保您了解为什么会这样。

更好的解决方案是将with open...用于多个文件:

with open(path, 'wt') as f1, open('csv_path', 'r') as f2:
write = csv.writer(f1, delimiter=',')
read = csv.reader(f2, delimiter=',')

最新更新