我正在使用csv.DictReader,DictWriter。
我有一个函数可以读取文件,因此看起来会关闭它。在另一个函数中,我需要添加更多功能,但我不断得到: ValueError:关闭文件的I / O操作。
代码如下:在模块级别:
FILE = 'finished_emails.csv'
with open(FILE, 'r') as DONE:
READER = DictReader(DONE)
FINISHED = [e['email'] for e in READER]
模块级别的下一个:
with open(FILE, 'a+') as DONE:
FIELDS = ['email']
WRITER = DictWriter(DONE, FIELDS)
然后在函数内部:
WRITER.writerow({'email': email})
我只是想跟踪一堆已发送的电子邮件,这样如果脚本崩溃,我就可以从我离开的地方开始。
任何帮助都会很棒!谢谢!
答案 0 :(得分:2)
with
语句会在您取消代码后立即关闭文件。您应该将打开的文件对象传递给写入数据的函数,并在with
语句中调用该函数:
def example_func(writer, data):
writer.writerow({'email': data[0]})
with open(FILE, 'a+') as DONE:
FIELDS = ['email']
WRITER = DictWriter(DONE, FIELDS)
example_func(WRITER, FIELDS)