我想模拟一个流,所以我逐行循环浏览文本文件,并以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)
答案 0 :(得分:2)
之所以会发生这种情况,是因为文件对象实际上是流,因此数据不会立即写入文件中,而是会写入更大的数据块中。使用io.flush()
强制书写。
看这里:
https://docs.python.org/3/library/io.html#io.IOBase.flush