在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())

我收到此错误:

用法:ma​​in.py [-h] -i IMAGE -m MASK_RCNN [-v VISUALIZE] [-c CONFIDENCE] [-t 阈值] ma​​in.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中解析命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

在命令行参数中解析 \ - python 2.7.3

Python语言命令行参数解析接收参数执行脚本的三种方法

如何在C++中解析命令行参数

在python中解析命令行参数

python 命令行参数解析学习

python解析传入的命令行参数 argv