簡體   English   中英

為什么即使我寫正確,argparse也不起作用並發送無效的選項錯誤消息?

[英]Why doesn't argparse work and send invalid option error message even if i wrote correctly?

當我正確使用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 '-'

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM