我想知道如何從命令行傳遞的可選參數的順序argparse爲了蟒蛇+ argparse - 如何得到的命令行的可選參數
我有圖像處理類,這是能夠運用不同的操作圖像 - 像旋轉,裁剪,調整大小...
和秩序,這些動作被應用往往是必要的(例如:你想你調整它之前裁剪圖像)
我有這樣的代碼:
parser = argparse.ArgumentParser(description='Image processing arguments')
parser.add_argument('source_file', help='source file')
parser.add_argument('target_file', help='target file')
parser.add_argument('-resize', nargs=2, help='resize image', metavar=('WIDTH', 'HEIGHT'))
parser.add_argument('-rotate', nargs=1, help='rotate image', metavar='ANGLE')
parser.add_argument('-crop', nargs=4, help='crop image', metavar=('START_X','START_Y','WIDTH','HEIGHT'))
ar = parser.parse_args()
print ar
但是 - 無論在哪個順序我將參數傳遞給腳本:
cmd.py test.jpg放在test2.jpg -crop 10 10 200 200 450調整大小300
cmd.py測試.JPG test2.jpg調整大小450 300 -crop 10 10 200 200
在命名空間的項目總是在相同的順序(按字母我想):
Namespace(crop=['10', '10', '200', '200'], resize=['450', '300'], rotate=None, source_file='test.jpg', target_file='test
2.jpg')
有辦法按命令行字符串中的位置對它們進行排序或獲取它們的索引嗎?
OrderNamespace是一個很好的解決方案,如果一個人也想使用其他操作(例如builtins)。好想法! –
不幸的是,當設置了默認值時,將調用所有默認值的__setattr__方法,但是它們是否被使用。 –
如果您不使用'SUPPRESS',默認值將出現在'訂單'列表的開頭,也可能在結尾處再次出現。 'parser'使用相同的'__setattr__'來記錄默認值和給定值。 'OrderAction'沒有這個問題。 – hpaulj