python - 为什么即使我写得正确,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 '-'
解决方案
for 的第二个位置参数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())
或者,如果你想要一个默认值,-i
你-o
可以使用 argparser 的默认参数:
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", default="C:\input_01.png",
help="path to input image")
ap.add_argument("-o", "--output", default="C:\output_011.png",
help="path to output image")
args = vars(ap.parse_args())
然后使用命令行参数从命令行调用它:
python shape_counter.py -i C:\input_01.png -o C:\output_011.png
推荐阅读
- barcode - Java 的条码生成库
- python - 两个日期函数之间的差异不起作用Python
- python - python在类属性中的f-string范围
- javascript - 无法使用 new Date() 更新 Firestore 模拟器文档中的字段
- linux - 在 PTP4l 中发送延迟请求失败错误?
- computer-science - 如何修复我的代码以找到二阶 LTI?
- javascript - javascript对象数组添加排名但不更改主数组的顺序
- java - Spring boot JDBC模板中“IN”关键字的使用
- python - 使用正则表达式查找公共子字符串是否存在
- flask - Flask - PyPDF2 - 在内存中导出 pdf 文件