0
我想知道是否可以根據是否給定值來更改參數的行爲。[Python argparse]將參數的行爲設置爲交互式(如果未給出值)
通常,我想提供一種交互方式來輸入密碼。
示例用法:
$ script.py =>使用默認參數值的參數 'P'
$ script.py -p爲mypass =>使用 '爲mypass' 作爲'值p」
$ script.py -p =>獲取密碼交互
我想知道是否可以根據是否給定值來更改參數的行爲。[Python argparse]將參數的行爲設置爲交互式(如果未給出值)
通常,我想提供一種交互方式來輸入密碼。
示例用法:
$ script.py =>使用默認參數值的參數 'P'
$ script.py -p爲mypass =>使用 '爲mypass' 作爲'值p」
$ script.py -p =>獲取密碼交互
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-p", nargs='?', const="mypass", default="default")
args = parser.parse_args()
if args.p:
print args.p
你可以然後檢查P的值,並獲取密碼交互
一個簡單的類:
class AskUser:
def __init__(self, type, func, *args, **kwargs):
self.type = type
self.func = func
self.args = args
self.kwargs = kwargs
def __call__(self, value):
if value == '':
value = self.func(*self.args, **self.kwargs)
return self.type(value)
,您可以直接插入argparse:
parser = argparse.ArgumentParser()
parser.add_argument('user', nargs='?', type=AskUser(str, input, 'Enter user name: '), default='')
parser.add_argument('file', nargs='?', type=AskUser(Path, filedialog.asksaveasfilename,
title='Select a file', filetypes=(('CSV files', '*.csv'),), defaultextension='.csv'), default='')
args = parser.parse_args()
哪裏AskUser從何而來? – user12711 2017-07-07 00:26:30