为什么即使我写正确,argparse也不起作用并发送无效的选项错误消息?

时间:2019-05-22 16:22:29

标签: python pycharm argparse

当我正确使用argparse时,选项字符串错误无效(来自python教育网站的示例文件)。

我尝试更改输入和输出文件的路径以及路径中\-> /或\之类的符号

原始代码是

ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True,
    help="path to input image")
ap.add_argument("-o", "--output", required=True,
    help="path to output image")
args = vars(ap.parse_args())

我更改了参数--input和--output->输入和输出文件的路径。

ap = argparse.ArgumentParser()
ap.add_argument("-i", "C:\input_01.png", required=True,
    help="path to input image")
ap.add_argument("-o", "C:\output_011.png", required=True,
    help="path to output image")
args = vars(ap.parse_args())

我收到此错误消息。

Traceback (most recent call last):
  File "C:/Users/command-line-arguments/shape_counter.py", line 13, in 
<module>
    help="path to input image")
  File "C:\Users\huryo\Anaconda3\lib\argparse.py", line 1339, in add_argument
    kwargs = self._get_optional_kwargs(*args, **kwargs)
  File "C:\Users\huryo\Anaconda3\lib\argparse.py", line 1470, in _get_optional_kwargs
    raise ValueError(msg % args)
ValueError: invalid option string 'C:\\input_01.png': must start with a character '-'

1 个答案:

答案 0 :(得分:1)

{'ID': 'BB', 'First_Name': 'BB', 'Last_Name': 'BB', 'Age': 'BB'}的第二个位置参数是您要用来引用变量的名称的长版本,因此{'ID': ['AA','BB'], 'First_Name': ['AA','BB'], 'Last_Name': ['AA','BB'], 'Age': ['AA','BB']}将是arg_parse.addargument(),您需要使用-i参数,如果您希望它具有默认值。您应该将代码更改回:

--input

或者,如果您想要default=...ap = argparse.ArgumentParser() ap.add_argument("-i", "--input", required=True, help="path to input image") ap.add_argument("-o", "--output", required=True, help="path to output image") args = vars(ap.parse_args()) 的默认值,则可以使用argparser的默认参数:

-i

,然后在命令行中使用命令行参数对其进行调用:

-o