每次写作时保存文件

时间:2016-05-13 00:59:14

标签: python file

我有以下情况:我正在编写一个csv文本文件,我不会丢失写在其上的数据。

但是,在以下情况下,我会丢失我写入第四次迭代的所有内容。

import csv
import time

file_reference = open('result.csv', 'w', newline='')
file_csv = csv.writer(file_reference, delimiter=';', quoting=csv.QUOTE_MINIMAL)

for i in range(50):
    file_csv.writerow([i])
    time.sleep(1)
    print('...')

    if i == 4:
        raise ValueError('foo')

file_reference.close()

如何将每个执行编写器的文本文件中写入的数据写入磁盘?

1 个答案:

答案 0 :(得分:0)

为什么要在for循环中引发ValueError?是不是更容易打破for循环刷新/关闭文件然后引发ValueError?但是,如果必须在for循环中引发异常,为什么不使用上下文管理器?

import csv
import time

with open('result.csv', 'w') as file_reference:
    file_csv = csv.writer(file_reference, delimiter=';', quoting=csv.QUOTE_MINIMAL)

    for i in range(50):
        file_csv.writerow([i])
        time.sleep(1)
        print('...')

        if i == 4:
            raise ValueError('foo')

    file_reference.close()