Я пытаюсь получить несколько пространств имен для следующего .py файла, который выполняется на удаленном сервере:argparse возвращает вложенные значения только 1 имен
cmd = 'ssh [email protected]{0} 2>/dev/null "/root/abc.py {1} {2} {3} {4} {5} {6} {7} {8}"'.format(hostname, from_vm, to_vm, from_slot, to_slot, from_port, to_port, from_vm_inst, to_vm_inst)
За исключением имени хоста, все остальные объекты являются списками.
В abc.py, у меня есть следующий код:
parser = argparse.ArgumentParser()
parser.add_argument(nargs='+', dest='from_vm',
help='list of name of source VMs')
print("List of items: {}".format(args.from_vm))
Это возвращает мне следующее:
Список элементов: [ '[myvm-R1-1,', ' myvm-r1-1, ',' myvm-r2-1, ',' myvm-r1-1, ',' myvm-r1-1, ',' myvm-r2-1, ',' myvm-r2-1 , 'myvm-r1-1]', 'myvm-r2-1,', 'myvm-r2-1,', 'myvm-spt', 'myvm-spt', 'myvm-r1- 1, ',' myvm-spt, ',' myvm-r2-1, ',' myvm-spt] ',' [1, ',' 1, ',' 1, ',' 1, ',' 1 , ',' 1, ',' 1, ',' 1] ',' [1, ',' 1, ',' 1, ',' 1, ',' 1, ',' 1, ',', 1, 1, 1, 1, 2, 3, '[3,', '6,', '1,', '3,', '6,', '4 , ',', '5,', '2]', '[instance-000000bc,', 'instance-000000bc,', 'instance-000000bf,', 'instance-000000bc,', 'instance-000000bc,', instance-000000bf, ',' instance-000000bf, ',' instance-000000bc] ',' [instance-000000bf, ',' instance-000000bf, ',' instance-000000c0, ',' instance-000000c0, ',' instance-000000c0, ', экземпляр-000000bc, ', 'экземпляр-000000c0,', 'экземпляр-000000bf,', 'экземпляр-000000c0]']
Существует только 1 имена, связанные с этим:
пространство имен (from_vm = ['[myvm-r1-1,', 'myvm-r1-1,', 'myvm-r2-1,', 'myvm-r1-1,', 'myvm-r1-1,', 'myvm-r1-1,', myvm-r2-1, ',' myvm-r2-1, ',' myvm-r1-1] ',' [myvm-r2-1, ',' myvm-r2-1, ',' myvm-spt, ',' myvm-spt ',' myvm-r1-1 ',' myvm-spt ',' myvm-r 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] ',' [1, ',' 1, ',' 1, ',' 1, ',' 1, ',' 1, ',' 1, ',' 1] ',' [2, , '3,', '1,', '1,', '5,', '2,', '4,', '4]', '[3,', '6,', '1, ',' 3, ',' 6, ',' 4, ',' 5, ',' 2] ',' [instance-000000bc, ',' instance-000000bc, ',' instance-000000bf, ', экземпляр-000000bc, ',' instance-000000bc, ',' instance-000000bf, ',' instance-000000bf, ',' instance-000000bc] ',' [instance-000000bf, ',' instance-000000bf, ', экземпляр-000000c0, ', 'экземпляр-000000c0,', 'экземпляр-000000bc,', 'экземпляр-000000c0,', 'экземпляр-000000bf,', 'экземпляр-000000c0]'])
Это проявляется для меня как вложенный список. Я хочу иметь разные пространства имен для каждого списка внутри этого вложенного списка, но без успеха. Я пробовал использовать отдельный parser.add_argument с отдельным dest = xyz, но без успеха. Может ли кто-нибудь помочь? Мое требование состоит в том, чтобы иметь разные пространства имен для каждого списка.
Если вы пропустили команду 'args = parser.parse_args()' из вашего образца кода? – hpaulj
@hpaulj, у меня есть это в моем коде, именно так я не упомянул об этом в приведенном выше примере. –