Неправильный порядок записи в файл с функцией print () и subprocess.call (... stdout = f) - PullRequest
0 голосов
/ 16 января 2020

Я хочу записать в файл с обеими функциями print(.., f) и subprocess.run(.., stdout=f), но, хотя я сначала вызываю print, записанные данные subprocess.run всегда идут первыми в текстовом файле.

Вот мой код:

f = open("test.txt", "w")
...
print(abc, file=f)
for letter in ['A', 'B', 'C', 'D']:
     print(letter, file=f)
     subprocess.run("...", encoding = 'utf8', stdout=f)
f.close()

Хотя я сначала использую функцию печати для записи в файл, записанные данные функции печати находятся внизу текстового файла. Что я могу сделать, чтобы сохранить правильный порядок?

1 Ответ

1 голос
/ 16 января 2020

Python буферизирует вывод в файлы, но подпроцесс записывает непосредственно в файл, а не в буфер Python. Flu sh буфер первый.

for letter in ['A', 'B', 'C', 'D']:
    print(letter, file=f)
    f.flush()
    subprocess.run("...", encoding = 'utf8', stdout=f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...