Python: порядок вывода - PullRequest
       7

Python: порядок вывода

0 голосов
/ 10 ноября 2018

Я хотел бы знать логику порядка вывода в Python 3. Например:

test.py

import sys
print("my stdout", file=sys.stdout)
print("my stderr", file=sys.stderr)

Мне нужны оба вывода в одном файле.

Я запускаю код с этой командой:

python3 test.py 1>all_outputs.txt2>&1

Я ожидал получить следующий вывод:

all_outputs.txt

my stdout
my stderr

Но результат в:

my stderr
my stdout

Так почему же сначала появилась ошибка?

1 Ответ

0 голосов
/ 10 ноября 2018

Как предложил Патрик-Хау в комментариях включить параметр flush=True в print() функции и заимствовать синтаксис bash из ответа в Как перенаправить и добавить как stdout, так и stderr в файл с помощью Bash

import sys
print("my stdout", file=sys.stdout, flush=True)
print("my stderr", file=sys.stderr, flush=True)

, то:

$ python3 test.py > all_outputs.txt 2>&1
$ cat all_outputs.txt 
my stdout
my stderr
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...