我想知道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
那为什么首先出现错误?
答案 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