Почему Python не записывает напрямую в файл после каждой итерации цикла for - PullRequest
0 голосов
/ 27 декабря 2018

Я хотел создать симуляцию потока, поэтому построчно просматривал текстовый файл, записывая строки в другой текстовый файл с 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 голосов
/ 27 декабря 2018

Это происходит потому, что файловый объект на самом деле является потоком, поэтому данные записываются в файл не сразу, а большими порциями данных.Используйте io.flush(), чтобы заставить писать.Смотрите здесь: https://docs.python.org/3/library/io.html#io.IOBase.flush

...