【发布时间】:2017-07-05 21:32:12
【问题描述】:
我正在尝试为以下在远程服务器上执行的 .py 文件获取多个命名空间:
cmd = 'ssh root@{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]', '[2,', '3,', '1,', '1,', ' 5,', '2,', '4,', '4]', '[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-000000bc ,', 'instance-000000c0,', 'instance-000000bf,', 'instance-000000c0]']
只有 1 个命名空间与此关联:
命名空间(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]', '[2,', '3,', '1,', '1,', ' 5,', '2,', '4,', '4]', '[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-000000bc ,', 'instance-000000c0,', 'instance-000000bf,', 'instance-000000c0]'])
这在我看来是一个嵌套列表。我希望这个嵌套列表中的每个列表都有不同的命名空间,但没有成功。我尝试使用单独的 parser.add_argument 和单独的 dest=xyz,但没有成功。有人可以帮忙吗?我的要求是每个列表都有不同的命名空间。
【问题讨论】:
-
您是否在代码示例中省略了
args = parser.parse_args()命令? -
@hpaulj,我的代码里有,只是我在上面的例子中没有提到。
标签: argparse