【发布时间】:2016-05-16 18:05:56
【问题描述】:
我遇到了一个非常奇怪的问题——当我使用argparser.add_argument() 方法时,我得到了ArgumentError()。
from oauth2client.tools import argparser, run_flow
if __name__ == "__main__":
argparser.add_argument("--videoid", default="L-oNKK1CrnU",
help="ID of video to like.")
我正在使用 pdb 运行代码,这就是我得到的错误:
(Pdb) n
ArgumentError: ArgumentError()
> c:\py\googleapitest.py(48)<module>()->None
-> help="ID of video to like.")
这是根本原因:
C:\Python27\lib\argparse.pyc in _handle_conflict_error(self, action, conflicting_actions)
1452 for option_string, action
1453 in conflicting_actions])
-> 1454 raise ArgumentError(action, message % conflict_string)
即使我没有传递“帮助”参数,我也会收到错误消息。
我做错了什么?
【问题讨论】:
-
什么是
argparser? -
argparser实际上是一个argparse解析器:github.com/google/oauth2client/blob/master/oauth2client/…。代码中没有--videoid选项。此外,我尝试了示例代码,它对我有用(即不会引发错误)。但是我使用 GNU/Linux,并且我看到 OP 在 Windows 上运行代码 — argparse 在那里的行为会有所不同吗? -
现在我倾向于认为 --videoid 确实被添加到代码中其他地方的 argparser 中,就像@tdelaney 说的那样。你能检查一下吗?作为对该假设的简单测试,请尝试运行您的第一个清单中的确切代码,看看是否引发了错误。
-
另外,我浏览了
oauth2client代码,没有videoid出现。 -
就在您添加论点之前,请查看
argparser.print_help()中已有的内容。如果您在添加参数之前看到了参数,则说明是其他人做的。
标签: python arguments parameter-passing