![](/img/trans.png)
[英]How do I run my Python script? Why does the command line tell me "no such file or directory"?
[英]How can I tell if my script is being run from a cronjob or from the command line?
我有一个脚本,它通过写入同一控制台行来显示节目的上传进度。 当脚本是从cron作业运行的,而不是写到一行时,我得到很多行:
*** E0710091001.DAT *** [0.67%]
*** E0710091001.DAT *** [1.33%]
*** E0710091001.DAT *** [2.00%]
*** E0710091001.DAT *** [2.66%]
*** E0710091001.DAT *** [3.33%]
*** E0710091001.DAT *** [3.99%]
*** E0710091001.DAT *** [4.66%]
*** E0710091001.DAT *** [5.32%]
*** E0710091001.DAT *** [5.99%]
*** E0710091001.DAT *** [6.65%]
*** E0710091001.DAT *** [7.32%]
*** E0710091001.DAT *** [7.98%]
*** E0710091001.DAT *** [8.65%]
*** E0710091001.DAT *** [9.32%]
*** E0710091001.DAT *** [9.98%]
*** E0710091001.DAT *** [10.65%]
*** E0710091001.DAT *** [11.31%]
*** E0710091001.DAT *** [11.98%]
*** E0710091001.DAT *** [12.64%]
*** E0710091001.DAT *** [13.31%]
*** E0710091001.DAT *** [13.97%]
*** E0710091001.DAT *** [14.64%]
*** E0710091001.DAT *** [15.30%]
*** E0710091001.DAT *** [15.97%]
*** E0710091001.DAT *** [16.63%]
*** E0710091001.DAT *** [17.30%]
*** E0710091001.DAT *** [17.97%]
*** E0710091001.DAT *** [18.63%]
我只想知道是否可以从脚本内部判断是否从cron调用了它,如果可以,则不会显示此输出。
您可以创建一个标志。 可能没有记录,您的cron作业将传递给实用程序以构造输出。
我将检查sys.stderr.isatty()
-这样一来,无论何时用户无法立即感知到stderr,都可以避免无用的“装饰”输出。
请参见下面的代码。 用您要显示的内容替换我的打印报表。
import sys
if sys.stdout.isatty():
print "Running from command line"
else:
print "Running from cron"
您想检查您是否在终端上。 看到这个堆栈溢出问题: 如何检测我的shell脚本是否正在通过管道运行?
一种简单的方法是让脚本采用一个参数,该参数表示抑制该输出,并在您从cron调用它时提供该参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.