2015-01-15 77 views
0

某種卡住的問題。我需要檢查在執行python腳本時是否通過命令提示符傳遞了某個參數。python 2.7檢查參數是否已從命令提示符傳遞

我執行蟒蛇文件python run.py -ip 127.0.0.1 -trigger 1

雖然在我以前​​作爲

parser = argparse.ArgumentParser() 
parser.add_argument('-ip', '--ip') 
args = parser.parse_args() 

如何檢查,如果參數trigger已通過與否我python腳本。如果參數中有觸發,則抓住觸發器的值並打印。

和腳本應該能夠與所有下面的命令

python run.py -ip 127.0.0.1沒有觸發參數的運行。

python run.py -ip 127.0.0.1 -trigger沒有觸發參數的值。

python run.py -ip 127.0.0.1 -trigger 1具有所有參數及其值。

另外更多的是從一個自動化的系統產生的執行命令自動,並且因此參數可以是多個,例如,命令可以是python run.py -ip 127.0.0.1 -trigger 1 prompt 0 base 5 .....,並且-trigger 1 prompt 0 base 5等被自動生成,因此,我希望實現在parameter check我的Python腳本,以便它可以處理任何數量的傳遞參數。

+1

改爲使用'parser.add_argument(' - trigger','--trigger',action = store_true)',現在您可以使用'if args.trigger: Evert

+0

@Evert,那不是評論 –

+0

@PadraicCunningham雖然這是錯誤的答案。 – Evert

回答

3

一個--trigger參數添加到您的解析器

parser = argparse.ArgumentParser() 
parser.add_argument('-ip', '--ip') 
parser.add_argument('-t','--trigger', nargs='*') 
args = parser.parse_args() 

如果--trigger不存在,則應該是args.trigger默認(例如None

如果存在沒有參數,args.trigger[],空單

,否則這將是所有下面的字符串列表。從技術上講,[]情況也是如此。可以定義const,但是你只能給它一個參數。

nargs=argparse.REMAINDER也應該工作。如果將在--trigger之後抓取所有內容,它是否看起來像一個標誌(' - ')或不是。如果您將字符串傳遞到另一個程序,這可能很方便。請參閱文檔中的示例

parse_known_args如果您現在要解析某些字符串並稍後處理其他字符,也很方便。這又是在文檔中。

nargs='*'的位置參數也很方便。而輸入字符串中的'--'對於分離應該從應該查看的字符串中分離出來的字符串很有用。

+0

這現在解決了我的問題。 – Nepal12

-1

argparse的小例子,但你應該閱讀tutorial

#!/usr/bin/python 
import argparse 

parser = argparse.ArgumentParser(description='Check for trigger') 
parser.add_argument('-trigger', help='trigger value') 

args = parser.parse_args() 
if args.trigger is not None: 
    print("trigger value: {}".format(args.trigger)) 

你得到的輸出:

○ → ./trigger.py 

○ → ./trigger.py -trigger= 
trigger value: 

○ → ./trigger.py -trigger 1 
trigger value: 1