【发布时间】:2018-11-05 06:23:12
【问题描述】:
我想使用 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'
由于我对此很陌生,有人可以帮我解决这个问题吗?
【问题讨论】:
-
查看欺骗目标:
a = args.names-list[0]实际上是a = args.names - list[0]。你想要的是a = args.names_list[0] -
我不同意这是一个骗局。 OP 有多个错误,其中只有一个由重复项解决。
-
@Robᵩ 虽然是真的,但欺骗目标还显示了 parse_args 的正确用法,并且欺骗确实解决了遇到的特定问题/错误。我敢肯定,您写的答案仍然对 OP 有帮助,但未来的读者可能会通过欺骗得到更好的服务。
-
在调试
argparse时,它有助于print(args)(甚至在使用vars之前)。这将显示所有属性、它们的正确名称和值。
标签: python python-3.x command-line-arguments argparse