终端中的python没有输出

时间:2015-04-11 16:24:25

标签: python shell unix

是否可以隐藏像这样启动的Python脚本的每个输出:

python myscript.py&

我尝试使用

python myscript.py& > log.txt

但是我得到了一个输出。如果没有“&”,我就得不到它。

3 个答案:

答案 0 :(得分:2)

> log.txt仅重定向写入stdout的输出。要完全捕获所有可能的输出,您还需要重定向stderr

python myscript.py > log.txt 2>&1 &

请注意,在重定向之后,将命令放在后台的&符号在末尾。请参阅Bash编程中的All about redirection - 简介HOWTO。

在您的特定情况下,您正在启动Flask服务器; Flasks使用Python logging框架,默认配置是根据StreamHandler class创建一个记录器,输出到stderr,而不是stdout

您可以使用logging框架以不同方式配置日志记录;例如,您可以设置不同的处理程序以记录到特定文件,而不是使用重定向。有关详细信息,请参阅logging HOWTO documentation,以及Flask logging documentation

答案 1 :(得分:0)

它无法正常工作,因为&之后myscript.py告诉你的shell为该命令打开一个单独的子进程,并且没有通过命令行的其余部分。

你需要传递&在末尾。

python myscript.py > log.txt &

答案 2 :(得分:-1)

我终于找到了问题:"&"必须在最后一行。