Я хотел бы знать, как получить порядок необязательного аргумента, передаваемого из командной строки в 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 test.jpg test2.jpg -resize 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')
Есть ли способ упорядочить их по позиции в строке командной строки или получить их индекс?