argparse-将列表项分配给变量

时间:2018-05-25 20:09:00

标签: python python-3.x command-line-arguments argparse

我想使用cmd将多个参数传递给python脚本。下面是我使用的代码。

import argparse

ap = argparse.ArgumentParser()
ap.add_argument('-n', '--names-list', nargs='+', default=[])  
#item1 item2 item3 item4
args = vars(ap.parse_args())

a = args.names-list[0]
b= args.names-list[1]
c=args.names-list[2]
d=args.names-list[3]

print(a)
print(b)
print(c)
print(d)

当我执行代码时,我收到如下错误消息。

File "D:\script.py", line 7, in <module>
a = args.names-list[0]
AttributeError: 'dict' object has no attribute 'names'

因为我对此非常陌生,有人可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:1)

此行不正确。您无需调用vars()

args = vars(ap.parse_args())

相反,试试这个:

args = ap.parse_args()

此外,参数名称会自动从使用-转换为使用_。试试这个:a = args.names_list[0]

这是你的程序,有更正:

import argparse

ap = argparse.ArgumentParser()
ap.add_argument('-n', '--names-list', nargs='+', default=[])
#item1 item2 item3 item4
args = ap.parse_args()

a = args.names_list[0]
b= args.names_list[1]
c=args.names_list[2]
d=args.names_list[3]

print(a)
print(b)
print(c)
print(d)

结果如下:

$ python x.py -n one two three four
one
two
three
four