[英]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.