csv python上已关闭文件的I/O操作
我在做python3项目,当我试图在CSV文件上写东西时出错了csv python上已关闭文件的I/O操作,python,python-3.x,Python,Python 3.x,我在做python3项目,当我试图在CSV文件上写东西时出错了 with open('infile.csv', 'r') as f: reader = csv.reader(f) # manipulate the data with open('outfile.csv', 'w') as fl: writer = csv.writer(fl) for row in reader: writer.writerow(row) 我在csv python上
with open('infile.csv', 'r') as f:
reader = csv.reader(f)
# manipulate the data
with open('outfile.csv', 'w') as fl:
writer = csv.writer(fl)
for row in reader:
writer.writerow(row)
我在csv python上对关闭的文件执行
I/O操作。我是否需要先创建outfile.csv
?我不确定?因为您使用的是上下文管理器,当您离开它的作用域时,内嵌将关闭
解决办法是
with open('infile.csv', 'r') as f:
reader = csv.reader(f)
# manipulate the data
with open('outfile.csv', 'w') as f:
writer = csv.writer(f)
for row in reader:
writer.writerow(row)
编辑这里是一个更简洁和有效的方式
with open('infile.csv', 'r') as fin, open("outfile.csv" , "w") as fout:
reader = csv.reader(fin)
writer = csv.writer(fout)
for row in reader:
writer.writerow(row)
两者都有相同的文件处理程序。更惯用的做法是在同一个上下文管理器中打开两者以open('infle.csv','r')作为fin,open('outfile.csv','w')作为fout:#做一些事情
ya对于多个上下文管理器来说更简洁、更有效,最好使用