为什么每次for循环迭代后Python都不直接写文件

时间:2018-12-27 10:57:41

标签: python-3.x loops io stream

我想模拟一个流,所以我逐行循环浏览文本文件,并以time.sleep()1的时间将这些行写入另一个文本文件。问题在于python不会在1秒后将每一行写入文件,而是仅在达到260行时写入。
我不认为线条是我认为更重要的一点,因为线条的大小不同,我得到的等待时间/大小也就不同。有谁知道为什么python3会那样表现,我该如何解决?

我的代码:

import io
import time

with io.open('stream.txt', 'w', encoding="utf-8") as f, io.open('source.txt', encoding="utf-8") as g:
    for line in g:
        print(line, file=f, end='')
        time.sleep(1)

1 个答案:

答案 0 :(得分:2)

之所以会发生这种情况,是因为文件对象实际上是流,因此数据不会立即写入文件中,而是会写入更大的数据块中。使用io.flush()强制书写。 看这里: https://docs.python.org/3/library/io.html#io.IOBase.flush