如何在另一个函数中读取的函数内重新打开文件?

时间:2018-06-01 22:45:02

标签: python-3.x csv

我正在使用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})

我只是想跟踪一堆已发送的电子邮件,这样如果脚本崩溃,我就可以从我离开的地方开始。

任何帮助都会很棒!谢谢!

1 个答案:

答案 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)