簡體   English   中英

python 2.7檢查是否已從命令提示符傳遞了參數

[英]python 2.7 check if argument has been passed from command prompt

陷入困境。 我需要檢查在執行python腳本時是否已通過命令提示符傳遞了某個參數。

我將python文件作為python run.py -ip 127.0.0.1 -trigger 1

在我的python腳本上,我使用argparse作為

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

我如何檢查參數trigger是否已傳遞。 如果參數中包含觸發器,則獲取觸發器的值並打印出來。

並且腳本應該能夠與以下所有命令一起運行

沒有觸發參數的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等會自動生成,因此我想在我的python腳本中實現parameter check ,以便它可以處理任意數量的傳遞參數。

在解析器中添加--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將為[] ,空列表

否則,它將是所有后續字符串的列表。 從技術上講,[]情況也是如此。

使用nargs='?' const可以定義,但是您只能給它一個參數。

nargs=argparse.REMAINDER也應該起作用。 如果將--trigger之后的所有內容都--trigger ,無論它看起來是否像一個標志('-')。 如果將字符串傳遞到另一個程序,那會很方便。 請參閱文檔中的示例

如果您現在想解析一些字符串,然后再處理其余字符串, parse_known_args也很方便。 再次在文檔中。

nargs='*'位置參數也很方便。 輸入字符串中的'--'有助於將應解析的字符串與應視為簡單參數字符串的字符串分開。

argparse的一個最小示例,但是您應該閱讀該教程

#!/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM