我需要讓我的python腳本類型有點像最終用戶:如何用argparse創建類型爲「pair of list」的參數?
script.py -sizes <2,2> <3,3> <6,6>
其中-sizes
選項中的每個元素是一對兩個正整數。我怎樣才能達到這個?
我需要讓我的python腳本類型有點像最終用戶:如何用argparse創建類型爲「pair of list」的參數?
script.py -sizes <2,2> <3,3> <6,6>
其中-sizes
選項中的每個元素是一對兩個正整數。我怎樣才能達到這個?
定義自定義類型:
def pair(arg):
# For simplity, assume arg is a pair of integers
# separated by a comma. If you want to do more
# validation, raise argparse.ArgumentError if you
# encounter a problem.
return [int(x) for x in arg.split(',')]
然後用這個作爲類型的常規參數:
p.add_argument('--sizes', type=pair, nargs='+')
然後
>>> p.parse_args('--sizes 1,3 4,6'.split())
Namespace(sizes=[[1, 3], [4, 6]])
Argparse不會嘗試覆蓋所有可能的輸入數據格式。你總是可以得到sizes
爲字符串,並用幾行代碼解析它們:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--sizes', nargs='+')
args = parser.parse_args()
try:
sizes = [tuple(map(int, s.split(',', maxsplit=1))) for s in args.sizes]
except Exception:
print('sizes cannot be parsed')
print(sizes)
「特殊情況是不夠的特殊打破規則。」
是輸入準確'<2,2><3,3>'或'2,2 3,3 4,4' – idjaw
@idjaw輸入沒有規定。我只需要讓用戶輸入尺寸由兩個整數(x和y尺寸) –
'nargs = 2'和'action ='append''讓你解析'-s 2 2 -s 3 3 -s 6 6 」。 – hpaulj