【问题标题】:Parse command line argument in python在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 的命令行。

标签: python jupyter-notebook jupyter argparse


【解决方案1】:

argparse 处理sys.argv 列表中的字符串。通常这来自调用包含argparse 代码的脚本时提供的命令行值:

$ python main.py -i foo -m bar

但您似乎正在使用ipython。看看你如何调用这个脚本会很好。但您可能需要使用:

$ ipython -i main.py -- -i foo -m bar

“--”将ipython 使用的输入与它应该提供给main.py 的输入分开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 2017-10-29
    • 2020-01-01
    • 2011-11-15
    • 2013-03-21
    相关资源
    最近更新 更多