2009-08-16 134 views
2

我想讓我的腳本擁有2個行爲,一個是作爲計劃任務啓動的,另一個是手動啓動的行爲。我如何測試互動性?如何檢查Python腳本是否以交互方式啓動?

編輯:這可能是一個cron作業,或通過Windows批處理文件,通過計劃的任務啓動。

+1

「計劃任務」 ?由什麼軟件開始?什麼平臺? 「手動?」從IDLE?從命令行?什麼平臺?什麼外殼? – 2009-08-16 18:50:10

+0

[檢查Python腳本中的交互式shell]可能的重複(https://stackoverflow.com/questions/6108330/checking-for-interactive-shell-in-a-python-script) – ideasman42 2017-08-29 06:07:58

回答

7

如果你想知道,如果你從一個終端讀取(尚不清楚,如果這是一個足以區分,請說明),可以使用

sys.stdin.isatty() 
11

您應該簡單地添加一個命令行開關在計劃任務中,並在腳本中檢查它,根據需要修改行爲。顯式比隱式更好。

此設計的一個好處是:無論您如何實際調用腳本,您都可以測試兩種行爲。

+0

同意。通常使用awesomeApp運行腳本,並使用awesomeApp - 批處理作爲批處理作業。 – scvalex 2009-08-16 19:07:17

0

我只是添加一個命令行開關,當你用cron的稱之爲:

蟒蛇yourscript.py -scheduled

然後在你的程序

import sys 

if "-scheduled" in sys.argv: 
    #--non-interactive code-- 
else: 
    #--interactive code-- 
+1

至少使用傳統的「 - 計劃」 – 2009-10-19 19:33:24

相關問題