csv python上已关闭文件的I/O操作

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上

我在做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上对关闭的文件执行
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对于多个上下文管理器来说更简洁、更有效,最好使用