亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python-parser.parse_args()解析參數問題

 更新時間:2023年08月02日 17:00:13   作者:北辰悠杏  
這篇文章主要介紹了python-parser.parse_args()解析參數問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

python-parser.parse_args()解析參數

import argparse
#設置參數對象,簡要設置為該程序要執(zhí)行什么任務
parser = argparse.ArgumentParser("mission_name")
#調用 add_argument() 方法添加參數
parser.add_argument('--ckpt', type=str, default="./weigths/jaad/best.pth", help="Path to model weigths")
#使用 parse_args() 解析添加的參數
args = parser.parse_args()

使用argparse的第一步

是創(chuàng)建一個 ArgumentParser 對象:

對 ArgumentParser 構造方法的調用都會使用 description= 關鍵字參數(可以忽略description= 只傳遞關鍵字參數.

調用add_argument()方法添加參數

其中,包含的參數類型有:

  • name or flags - 選項字符串的名字或者列表,例如 foo 或者 -f, --foo.
  • action - 命令行遇到參數時的動作,默認值是 store.
  • store_const-表示賦值為const;
  • append-將遇到的值存儲成列表,也就是如果參數重復則會保存多個值;
  • append_const-將參數規(guī)范中定義的一個值保存到一個列表;
  • count-存儲遇到的次數.

此外,也可以繼承 argparse.Action 自定義參數解析;

  • nargs - 應該讀取的命令行參數個數,可以是具體的數字,或者是?號,當不指定值時對于 Positional argument 使用 default,對于 Optional argument 使用 const; 或者是 * 號,表示 0 或多個參數;或者是 + 號表示 1 或多個參數.
  • const - action 和 nargs 所需要的常量值.
  • default - 不指定參數時的默認值.
  • type - 命令行參數應該被轉換成的類型.
  • choices - 參數可允許的值的一個容器.
  • required - 可選參數是否可以省略 (僅針對可選參數).
  • help - 參數的幫助信息,當指定為 argparse.SUPPRESS 時表示不顯示該參數的幫助信息.
  • metavar - 在 usage 說明中的參數名稱,對于必選參數默認就是參數名稱,對于可選參數默認是全大寫的參數名稱.
  • dest - 解析后的參數名稱,默認情況下,對于可選參數選取最長的名稱,中劃線轉換為下劃線.

使用 parse_args() 解析添加的參數

ArgumentParser 通過 parse_args() 方法解析參數.它將檢查命令行,把每個參數轉換為適當的類型然后調用相應的操作

解決SystemExit: 2,args = parser.parse_args()問題

報錯

 File "/home/barry/PycharmProjects/EEPC/detect.py", line 283, in parse_opt
    opt = parser.parse_args()
  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 1823, in parse_args
    self.error(msg % ' '.join(argv))
  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 2577, in error
    self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 2564, in exit
    _sys.exit(status)
SystemExit: 2

原因

報錯原因:

argparse 是一個旨在解析從命令行傳遞的參數的模塊,您可以使用 argparse 來編譯 參數內容。

如果 argparse 認為參數無效,則退出,這通常在 python 中通過調用 sys.exit() 來完成,這會引發(fā) SystemExit 錯誤,這就是您所看到的。

所以問題是你試圖從交互式解釋器(看起來像 ipython)中使用 argparse,此時程序已經啟動,所以應該已經解析了 args。 

解決方法一

args = parser.parse_args()
改成
args = parser.parse_args(args=[])

原因分析:

1.args = parser.parse_args()
2.parse_args(args=["-n3","-b2"])#表示給n參數賦值為3,b參數賦值為2。其他參數默認。
parse_args(args=[])#表示所有參數使用默認。

而我們的報錯情況是形式1,一旦執(zhí)行parse_args()語句,python系統(tǒng)就會執(zhí)行讀取參數的操作(我們看不到),此時jupyter notebook系統(tǒng)默認會給一個奇怪的參數:

因此:

將parse_args()由形式1換成形式2。

最后一行換成:

import argparse
parser = argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n", "--num-epochs", default=5, type=int)
parser.add_argument("-t", "--num-iters", default=60, type=int)
parser.add_argument("-b", "--batch-size", default=1000, type=int)
parser.add_argument("-lr", "--learning-rate", default=0.01, type=float)
args = parser.parse_args(args=[])

解決方案二

刪除參數required=True,如果還不行的話按照再按照方法一方法添加

parser.add_argument("--model_path", type=str, required=True, default='/mnt/data_1/', help="The path to model parameters to be loaded.")
parser.add_argument("--model_path", type=str, default='/mnt/data_1/', help="The path to model parameters to be loaded.")
args = parser.parse_args(args=[])

解決方案三

開頭添加:

import sys
sys.argv=['']
del sys

解決方法四

添加一個接受上面那個參數的語句。

parser.add_argument('-f', type=str, default="讀取額外的參數")
import argparse
parser = argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n", "--num-epochs", default=5, type=int)
parser.add_argument("-t", "--num-iters", default=60, type=int)
parser.add_argument("-b", "--batch-size", default=1000, type=int)
parser.add_argument("-lr", "--learning-rate", default=0.01, type=float)
parser.add_argument("-f","--file",default="file")#接收這個-f參數
args = parser.parse_args()
print(args.file)

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python @property原理解析和用法實例

    Python @property原理解析和用法實例

    這篇文章主要介紹了Python @property原理解析和用法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Python中Tkinter組件Button的具體使用

    Python中Tkinter組件Button的具體使用

    Button=組件用于實現(xiàn)各種各樣的按鈕,本文主要介紹了Python中Tkinter組件Button的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2022-01-01
  • 深入了解Python中pop和remove的使用方法

    深入了解Python中pop和remove的使用方法

    這篇文章主要介紹了深入了解Python中pop和remove的使用方法,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python安裝spark的詳細過程

    Python安裝spark的詳細過程

    這篇文章主要介紹了Python安裝spark的詳細過程,本文通過圖文實例代碼相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • python?管理系統(tǒng)實現(xiàn)mysql交互的示例代碼

    python?管理系統(tǒng)實現(xiàn)mysql交互的示例代碼

    這篇文章主要介紹了python?管理系統(tǒng)實現(xiàn)mysql交互,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • python數據預處理方式 :數據降維

    python數據預處理方式 :數據降維

    今天小編就為大家分享一篇python數據預處理方式 :數據降維,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python實現(xiàn)半角轉全角的方法示例

    Python實現(xiàn)半角轉全角的方法示例

    本文介紹了使用Python實現(xiàn)半角字符到全角字符的轉換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • python實現(xiàn)通過flask和前端進行數據收發(fā)

    python實現(xiàn)通過flask和前端進行數據收發(fā)

    今天小編就為大家分享一篇python實現(xiàn)通過flask和前端進行數據收發(fā),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • pytest通過assert進行斷言的實現(xiàn)

    pytest通過assert進行斷言的實現(xiàn)

    assert斷言是一種用于檢查代碼是否按預期工作的方法,在pytest中,assert斷言可以用于測試代碼的正確性,以確保代碼在運行時按照預期工作,本文就來介紹一下如何使用,感興趣的可以了解下
    2023-12-12
  • 基于Python如何使用AIML搭建聊天機器人

    基于Python如何使用AIML搭建聊天機器人

    AIML,全名為Artificial Intelligence Markup Language(人工智能標記語言),是一種創(chuàng)建自然語言軟件代理的XML語言,是由Richard Wallace和世界各地的自由軟件社區(qū)在1995年至2002年發(fā)明的,通過本文給大家介紹基于Python如何使用AIML搭建聊天機器人,需要的朋友一起學習
    2016-01-01

最新評論