欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python-parser.parse_args()解析參數(shù)問(wèn)題

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

python-parser.parse_args()解析參數(shù)

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

使用argparse的第一步

是創(chuàng)建一個(gè) ArgumentParser 對(duì)象:

對(duì) ArgumentParser 構(gòu)造方法的調(diào)用都會(huì)使用 description= 關(guān)鍵字參數(shù)(可以忽略description= 只傳遞關(guān)鍵字參數(shù).

調(diào)用add_argument()方法添加參數(shù)

其中,包含的參數(shù)類型有:

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

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

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

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

ArgumentParser 通過(guò) parse_args() 方法解析參數(shù).它將檢查命令行,把每個(gè)參數(shù)轉(zhuǎn)換為適當(dāng)?shù)念愋腿缓笳{(diào)用相應(yīng)的操作

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

報(bào)錯(cuò)

 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

原因

報(bào)錯(cuò)原因:

argparse 是一個(gè)旨在解析從命令行傳遞的參數(shù)的模塊,您可以使用 argparse 來(lái)編譯 參數(shù)內(nèi)容。

如果 argparse 認(rèn)為參數(shù)無(wú)效,則退出,這通常在 python 中通過(guò)調(diào)用 sys.exit() 來(lái)完成,這會(huì)引發(fā) SystemExit 錯(cuò)誤,這就是您所看到的。

所以問(wèn)題是你試圖從交互式解釋器(看起來(lái)像 ipython)中使用 argparse,此時(shí)程序已經(jīng)啟動(dòng),所以應(yīng)該已經(jīng)解析了 args。 

解決方法一

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

原因分析:

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

而我們的報(bào)錯(cuò)情況是形式1,一旦執(zhí)行parse_args()語(yǔ)句,python系統(tǒng)就會(huì)執(zhí)行讀取參數(shù)的操作(我們看不到),此時(shí)jupyter notebook系統(tǒng)默認(rèn)會(huì)給一個(gè)奇怪的參數(shù):

因此:

將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=[])

解決方案二

刪除參數(shù)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=[])

解決方案三

開(kāi)頭添加:

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

解決方法四

添加一個(gè)接受上面那個(gè)參數(shù)的語(yǔ)句。

parser.add_argument('-f', type=str, default="讀取額外的參數(shù)")
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")#接收這個(gè)-f參數(shù)
args = parser.parse_args()
print(args.file)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python @property原理解析和用法實(shí)例

    Python @property原理解析和用法實(shí)例

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

    Python中Tkinter組件Button的具體使用

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

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

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

    Python安裝spark的詳細(xì)過(guò)程

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

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

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

    python數(shù)據(jù)預(yù)處理方式 :數(shù)據(jù)降維

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

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

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

    python實(shí)現(xiàn)通過(guò)flask和前端進(jìn)行數(shù)據(jù)收發(fā)

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

    pytest通過(guò)assert進(jìn)行斷言的實(shí)現(xiàn)

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

    基于Python如何使用AIML搭建聊天機(jī)器人

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

最新評(píng)論