在python中解析命令行参数
Posted
技术标签:
【中文标题】在python中解析命令行参数【英文标题】:Parse command line argument in python 【发布时间】:2020-01-25 05:56:22 【问题描述】:必须进行命令行解析,我收到此错误。我对 Python 很陌生,我不知道错误是什么意思。
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
help="path to input image")
ap.add_argument("-m", "--mask-rcnn", required=True,
help="base path to mask-rcnn directory")
ap.add_argument("-v", "--visualize", type=int, default=0,
help="whether or not we are going to visualize each instance")
ap.add_argument("-c", "--confidence", type=float, default=0.5,
help="minimum probability to filter weak detections")
ap.add_argument("-t", "--threshold", type=float, default=0.3,
help="minimum threshold for pixel-wise mask segmentation")
args = vars(ap.parse_args())
我收到此错误:
用法:main.py [-h] -i IMAGE -m MASK_RCNN [-v VISUALIZE] [-c CONFIDENCE] [-t 阈值] main.py:错误:需要以下参数:-i/--image, -m/--mask-rcnn
发生了异常,使用
%tb
查看完整的回溯。系统退出:2
C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py:2889:用户警告:要退出:使用“退出”、“退出”或 Ctrl-D。 warn("要退出:使用 'exit'、'quit' 或 Ctrl-D。", stacklevel=1)
【问题讨论】:
您将required=True
传递给add_argument(...)
,因此-i
和-m
是必填项。
您是否需要它们?如果是这样,那么您必须在命令行上传递它们。如果没有,那么您需要改变主意并删除使它们成为必需的require=True
。应该很清楚。
这是一个要求。我不明白如何在命令行上传递它们。我必须在命令行上编写此代码吗?
@VITTHALBHANDARI 你用什么命令在命令行上运行它?
显示启动此ipython
会话并使用main.py
的命令行。
【参考方案1】:
argparse
处理sys.argv
列表中的字符串。通常这来自调用包含argparse
代码的脚本时提供的命令行值:
$ python main.py -i foo -m bar
但您似乎正在使用ipython
。看看你如何调用这个脚本会很好。但您可能需要使用:
$ ipython -i main.py -- -i foo -m bar
“--”将ipython
使用的输入与它应该提供给main.py
的输入分开。
【讨论】:
以上是关于在python中解析命令行参数的主要内容,如果未能解决你的问题,请参考以下文章