我的腳本具有以下用法:argparse:從位置到可選在某些情況下改變參數
prog.py login password [--show]
login
和password
是位置參數。但是,如果指定了另一個參數(-s
或--show
),我想將它們轉換爲可選項。因此,使用將是:
prog.py --show [login] [password]
這是我的代碼:
parser = argparse.ArgumentParser(...)
parser.add_argument('login', help="User login")
parser.add_argument('password', help="User password")
parser.add_argument('-s', '--show', dest='show', action='store_true',
help="Show user login and password")
例子:
prog.py login=mylogin password=mypassword
該腳本可以節省mylogin
和mypassword
到指定的文件authorization.txt
但是,prog.py --show
應該只能檢索無需login
和password
參數並打印當前用戶的登錄名和密碼從authorization.txt
信息到stdout:
login: mylogin
password: mypassword
爲您的用例提供示例可幫助我們更好地理解您的問題。 –
在你的代碼中'-s'和'--show'做同樣的事情,把'args.dest'屬性設置爲'True'。這兩個都不改變所需的兩個位置的解析。 – hpaulj
處理這個問題的最簡單方法是使參數始終爲可選,然後檢查'show'參數值是否設置爲false,如果是,檢查是否提供了用於登錄名和密碼的vlaue並且適當地拋出錯誤? –