Python:输出顺序

时间:2018-11-09 21:19:07

标签: python output

我想知道Python 3中输出顺序背后的逻辑。 例如:

test.py

>>> ''.join(['deleted' if ud.category(c)[0] == 'C' else c for c in s])
'ꐊ,ꀵ,deleted,ⴗ,ꦚ,deleted,ꢯ,⾌,deleted,⩱,ㇴ,deleted,鼺,deletedꞀ'

我希望两个输出都在同一个文件中。

我使用以下命令运行代码:

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

我期望获得以下输出:

all_outputs.txt

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

但是结果在:

my stdout
my stderr

那为什么首先出现错误?

1 个答案:

答案 0 :(得分:1)

如Patrick-Haugh在评论中所建议的那样,将flush=True参数包括到print()函数中,并从How can I redirect and append both stdout and stderr to a file with Bash?的答案中借用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