python之Argparse模塊

2021-03-02 測試開發技術筆記

argparse 模塊可以輕鬆編寫用戶友好的命令行接口。程序定義它需要的參數,然後 argparse 將弄清如何從 sys.argv 解析出那些參數。argparse 模塊還會自動生成幫助和使用手冊,並在用戶給程序傳入無效參數時報出錯誤信息。

argparse簡單使用流程

主要有三個步驟:

創建 ArgumentParser() 對象

調用 add_argument() 方法添加參數

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

創建解析器對象

parser = argparse.ArgumentParser()

一般這樣即可,全部可選參數如下。

class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)

詳細解釋參考官方文檔:https://docs.python.org/zh-cn/3/library/argparse.html#argparse.ArgumentParser

添加參數

分為添加位置參數-positional arguments和可選參數-optional arguments
添加位置參數聲明的參數名前綴不帶-或--,按照順序進行解析,在命令中必須出現,否則報錯,命令通常為:

parser.add_argument("a")
parser.add_argument("b")
parser.add_argument("c")

添加可選參數聲明的參數名前綴帶-或--,前綴是-的為短參數,前綴是--是長參數,兩者可以都有,也可以只有一個,短參數和長參數效果一樣。可選參數的值接在位置參數的後面,不影響位置參數的解析順序。
以深度學習訓練中經常出現的為例:

parser.add_argument('--batch-size', type=int, default=64, metavar='N',
help='input batch size for training (default: 64)')
parser.add_argument('--momentum', type=float, default=0.5, metavar='M',
help='SGD momentum (default: 0.5)')
parser.add_argument('--no-cuda', action='store_true', default=False,
help='disables CUDA training')
parser.add_argument('--save-model', action='store_true', default=False,
help='For Saving the current Model')

其中action參數的'store_true'指的是:觸發action時為真,不觸發則為假。即儲存了一個bool變量,默認為false,觸發不用賦值即變為true
type:指定參數類別,默認是str,傳入數字要定義
help:是一些提示信息
default:是默認值
metavar: 在 usage 說明中的參數名稱,對於必選參數默認就是參數名稱,對於可選參數默認是全大寫的參數名稱.
其它詳細用法文檔介紹:https://docs.python.org/zh-cn/3/library/argparse.html#argparse.ArgumentParser.add_argument

解析參數

args = parser.parse_args()

這樣args就有了參數屬性,可以用args了。

示例:

# 導入包
import argparse
# 創建解析器
parser = argparse.ArgumentParser()

#添加位置參數(positional arguments)
parser.add_argument('-a', type=int,help='input a int')
args = parser.parse_args()
print(args.a)

相關焦點

  • 輕鬆編寫命令行接口,argparse模塊你值得擁有!
    圖源:unsplash相信大多數人都會用這行命令運行python腳本。$ python main.py我們能否對該腳本稍作修改比如說定義自己的參數?當然可以!$ python main.py arg1 arg2Python中的argparse模塊能解決這個問題。argparse 模塊可以讓人輕鬆編寫用戶友好的命令行接口。程序定義它需要的參數,然後argparse將弄清如何從sys.argv解析出那些參數。argparse模塊還會自動生成幫助和使用手冊,並在用戶給程序傳入無效參數時報出錯誤信息。
  • Python 命令行參數解析庫argparse
    output_source_dir,feature,levels,但是該函數print不能在命令行運行,只能在腳本內部調用,於是我們需要python標準庫內的argparse[1]來幫忙。使用步驟:1)import argparse    首先導入模塊2)parser = argparse.ArgumentParser()    創建一個解析對象3)parser.add_argument()    向該對象中添加你要關注的命令行參數和選項4)parser.parse_args()    進行解析對於第
  • Argparse 教程
    這篇教程旨在作為 argparse 的入門介紹,此模塊是 Python 標準庫中推薦的命令行解析模塊
  • Python 命令行之旅:深入 argparse(二)
    orchestrate cloud resources')print(parser.parse_args())最終通過 -h 參數分別看 ali.py 和 aws.py 所支持的參數,其中共同參數為 --ak-id 和 --ak-secret,特定參數分別為 --ros 和 --cloudformation:$ python3
  • python argparse 源碼閱讀
    python中也提供了 getopt 實現。optparse 模塊結構optparse的模塊類圖:optparse可以看到optparse模塊主要就是 OptionParser, Option和HelpFormatter 三個類。
  • 如何使用argparse模塊批量修改文件後綴
    如何使用argparse模塊批量修改文件後綴?今天番茄加速就來分享argparse模塊的主要用法。導入模塊import argparseimport os定義腳本參數def get_parser():parser = argparse.ArgumentParser(description='工作目錄中文件後綴名修改')parser.add_argument('work_dir', metavar
  • 【python】命令行參數argparse用法詳解
    作者 yarving連結 https://www.jianshu.com/p/fef2d215b91d小編:今天開始寫比賽的代碼,為了寫的更加正規一些,這次就用了argparse。憂慮的;不安的;敏悟的;知曉的推薦閱讀:精彩知識回顧【珍藏版】長文詳解python正則表達式這些神經網絡調參細節,你都了解了嗎談談我在自然語言處理入門的一些個人拙見
  • 運行python腳本時傳入參數的三種方式
    如果在運行python腳本時需要傳入一些參數,例如gpus與batch_size,可以使用如下三種方式。 這三種格式對應不同的參數解析方式,分別為sys.argv、argparse、 tf.app.run, 前兩者是python自帶的功能,後者是tensorflow提供的便捷方式。
  • Python之os模塊
    Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
  • 給你Python程序構建一個優雅的終端CLI界面
    本文蟲蟲就給大家介紹如何在Python下實現優雅的終端命令行界面CLI,涉及的模塊有Click和argparse和。ClickPython開始的時候也模仿bansh和其他語言有getopt,optparse等模塊來做CLI,後來推出argparser模塊後getopt,optparse等都已經被廢棄,我們不在介紹他們。
  • python模塊三劍客之time os sys
    概要在python有幾個常用的模塊,今天來介紹一下python模塊中的三劍客:time模塊、os模塊、sys模塊。一、time模塊在python中,所有跟時間有關的操作都要用到時間模塊。我們在使用這個模塊之前,首先需要導入這個模塊。
  • 10個被嚴重忽視的Python自帶庫
    但通常我們更關注自己安裝的 python 庫,卻忽略了python自帶的庫或者內置函數。今天就來為大家介紹一下,十大被低估的 python 自帶庫/函數。1.6.在這裡我只是為大家簡單的展示了argparse的功能,其強大的魅力需要在大量的程序中才能體現出來。7.
  • 十大被低估的Python自帶庫!
    大家往往只是關注自己安裝的python庫,卻忽略了python自帶的庫函數,或者是python自帶的庫,今天小編就為大家介紹一下,十大被低估的python自帶庫或者是python自帶的函數。5.MathMath模塊是python自帶的簡單數學函數模塊,包括了指數、對數、正弦餘弦等函數。
  • Python程式設計師進階之路:從新手到高手的100個模塊
    ,真實反映了 python 程式設計師在成長過程中的一些困惑。英漢小詞典pythoneer - 指所有用python語言開發程序的人pythonista - 意為資深的、追求質量和品味的python開發者本文所列舉的這100個模塊,是在工作和學習中用過的或者正在學習的,算是學習總結。希望對處在迷茫中的程式設計師有所幫助。
  • Python 命令行之旅:使用 docopt 實現 git 命令
    按照慣例,我們要像使用 argparse 一樣使用 docopt 來實現 git 命令。為了讓沒讀過 使用 argparse 實現 git 命令 的小夥伴也能讀明白本文,我們仍會對 git 常用命令和 gitpython 做一個簡單介紹。本系列文章默認使用 Python 3 作為解釋器進行講解。
  • python 安全之 urllib 模塊
    urllib 庫是 python
  • python的模塊和序列
    前言概要本章節主要講述python中的模塊和序列的概念以及如何使用模塊和序列化方面的知識。模塊的概念在python中有個關鍵詞是import,代表的是導入、加載的意思。通常import加載的模塊分為四個通用類別:使用python語言編寫的代碼(後綴名為py的文件)已被編譯為共享庫或DLL的C或C++的擴展使用C編寫並連接到python解釋器的內置模塊
  • 如何編寫完美的 Python 命令行程序?
    argparse 是 Python 用來解析命令行參數的標準庫。我們來看看用 argparse 怎樣編寫凱撒加密的腳本:import argparsefrom caesar_encryption import encryptdef caesar():
  • 程序媛筆記分享——python模塊之subprocess模塊
    subprocess模塊:專門用於py執行系統命令1. 簡單命令的執行# !usr/bin/env python# -*- coding:utf-8 -*-import subprocess# subprocess模塊中,多個指令的輸入,由參數shell決定輸入形式是字符串還是序列,如下:# ret = subprocess.call(["ls", "-l"], shell=False)# ret = subprocess.call
  • Pytest之命令行執行
    使用Pyhton中的argparse可以實現與Jenkins中的參數化關聯起來,這樣建立一種機制後,我們只需要在參數化裡面定義我們需要被驗證的點來進行測試。如下代碼:#!/usr/bin/env python#!