在后台运行python脚本时出现异常的print()行为

时间:2019-06-27 13:41:54

标签: python

我有一个简单的python脚本,可以休眠5秒钟。我在后台运行脚本。在调用睡眠功能之前,我有一条小字样。但是除非我手动按Enter键,否则我将无法获得提示。当我评论打印状态时,我会得到提示。 不过,在两种情况下该脚本都会进入后台。

import time
print("going to sleep")
time.sleep(5)

当我运行带有打印语句的脚本时,没有得到提示。

USER-M-L0DD:Downloads user$python3 sleep.py &
[1] 10993
USER-M-L0DD:Downloads user$ going to sleep

我必须在此处手动按Enter键以返回提示。

在没有打印语句的情况下运行它,我会得到提示。

USER-M-L0DD:Downloads user$ python3 sleep.py &
[1] 11588
USER-M-L0DD:Downloads user$

2 个答案:

答案 0 :(得分:0)

  

当我运行带有print语句的脚本时,没有得到   提示回来。

USER-M-L0DD:Downloads user$ python3 sleep.py &
[1] 10993
USER-M-L0DD:Downloads user$ going to sleep
                      ^^^^^
                      there is your prompt
  

我必须在此处手动按Enter键以返回提示。

然后我想它看起来像这样:

USER-M-L0DD:Downloads user$ python3 sleep.py &
[1] 10993
USER-M-L0DD:Downloads user$ going to sleep
USER-M-L0DD:Downloads user$

您实际上会收到另一个提示。

答案 1 :(得分:0)

这是预期的。您确实会得到提示。它盯着你的脸:

USER-M-L0DD:Downloads user$python3 sleep.py &
[1] 10993
USER-M-L0DD:Downloads user$ going to sleep
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ < Look: there is your prompt

发生的事情是,当python脚本运行时,它还将其输出发送到控制台,并在提示后 打印。但是外壳仍然坐在那里等待您的输入。

没有print语句,则不会向控制台输出任何内容,因此提示后您将看不到任何其他输出。