【python模塊】argparse

文章目錄

  • argparse模塊介紹
  • 基本用法
  • add_argument()


argparse模塊介紹

argparse 模塊是 Python 標準庫中的一個用于編寫用戶友好的命令行接口(CLI)的模塊。它允許程序定義它所需要的命令行參數,然后 argparse 會自動從 sys.argv 解析出那些參數。argparse 自動生成幫助和使用手冊,并在用戶給程序傳入無效參數時報錯。

使用 argparse 可以讓你的程序更加靈活和易于使用,因為它允許用戶通過命令行參數來定制程序的行為,而不是硬編碼在程序中。這對于需要處理不同輸入數據或配置選項的腳本尤其有用。

基本用法

下面是如何創建一個基本的命令行接口的示例:

  1. 導入模塊:首先,需要導入 argparse 模塊。
import argparse
  1. 創建解析器:使用 ArgumentParser 類創建一個新的解析器對象。你可以指定程序的描述,這將在幫助信息中顯示。
parser = argparse.ArgumentParser(description='這是一個命令行工具的示例。')
  1. 添加參數:使用 add_argument() 方法定義程序接受的命令行參數。這個方法接受多個參數來指定如何解析命令行參數,下文將詳細介紹。
# 添加一個位置參數
parser.add_argument('input', help='輸入文件的路徑')# 添加一個可選參數,帶有一個短名稱和一個長名稱
parser.add_argument('-o', '--output', help='輸出文件的路徑', default='output.txt')# 添加一個開關參數
parser.add_argument('--verbose', action='store_true', help='增加輸出的詳細程度')
  1. 解析參數:使用 parse_args() 方法解析參數。這個方法會從 sys.argv 中讀取參數,并根據之前定義的規則進行解析。
args = parser.parse_args()
  1. 使用參數:解析后的參數存儲在 args 對象中,你可以根據需要使用它們。
if args.verbose:print('詳細模式已開啟')print(f'輸入文件:{args.input}')
if hasattr(args, 'output'):print(f'輸出文件:{args.output}')

將以上代碼片段組合起來,我們得到一個完整的示例腳本:

import argparse# 創建解析器
parser = argparse.ArgumentParser(description='這是一個命令行工具的示例。')# 添加參數
parser.add_argument('input', help='輸入文件的路徑')
parser.add_argument('-o', '--output', help='輸出文件的路徑', default='output.txt')
parser.add_argument('--verbose', action='store_true', help='增加輸出的詳細程度')# 解析參數
args = parser.parse_args()# 使用參數
if args.verbose:print('詳細模式已開啟')print(f'輸入文件:{args.input}')
if hasattr(args, 'output'):print(f'輸出文件:{args.output}')

要運行這個腳本并傳入參數,你可以在命令行中這樣做:

python your_script.py example.txt -o result.txt --verbose

這將輸出:

詳細模式已開啟
輸入文件:example.txt
輸出文件:result.txt

ArgumentParser 類提供了豐富的功能來幫助你構建復雜的命令行接口,包括但不限于子命令解析、類型檢查、默認值設置等。

add_argument()

add_argument() 方法是 argparse 模塊中最核心的方法之一,用于向程序中添加命令行參數。這個方法非常靈活,允許你指定參數的名稱、類型、是否必需、默認值、幫助信息等。下面是對 add_argument() 方法中一些常用參數的詳細介紹:

  1. name_or_flags
  • 類型:字符串或字符串列表
  • 描述:參數的名稱或一組名稱(也稱為標志)。如果是一個字符串,并且以 --- 開頭,那么它將被視為一個標志(flag)。如果是一個字符串列表,列表中的每個元素都將被視為一個單獨的標志,它們共享相同的參數值。
  • 示例'--foo'['-f', '--foo']
  1. action
  • 類型:字符串或 argparse.Action 子類
  • 描述:當解析到參數時,應該采取的基本動作類型。常見的動作包括 'store'(存儲值)、'store_true'(表示布爾值 True)、'store_false'(表示布爾值 False)、'append'(將值追加到列表中)等。也可以自定義動作類型。
  • 示例'store_true'
  1. nargs
  • 類型:整數或 '*', '?', '+'
  • 描述:命令行參數應該消耗的輸入數量。'*' 表示消耗所有剩余的命令行參數,'?' 表示參數是可選的(并且最多只能有一個值),'+' 表示參數至少需要一個值。
  • 示例'+'
  1. const
  • 類型:任意
  • 描述:與 actionnargs 一起使用時,const 提供了當參數不存在但需要一個默認值時的值。
  • 示例:對于 'store_const''append_const' 動作,const 指定了要存儲或追加的常量值。
  1. default
  • 類型:任意
  • 描述:如果命令行中沒有提供該參數,則使用的默認值。
  • 示例10
  1. type
  • 類型:可調用的(如函數、類型或 argparse.FileType
  • 描述:命令行參數應該被轉換成的類型。可以是 Python 的內置類型(如 intfloatstr),也可以是自定義的類型轉換函數。
  • 示例int
  1. choices
  • 類型:容器
  • 描述:參數允許的值的容器。如果命令行中的值不在此容器中,則拋出 argparse.ArgumentError
  • 示例['yes', 'no', 'maybe']
  1. required
  • 類型:布爾值
  • 描述:是否必須提供該命令行參數。
  • 示例True
  1. help
  • 類型:字符串
  • 描述:參數的簡短描述,用于生成幫助和使用手冊。
  • 示例"Enable verbose mode"
  1. metavar
  • 類型:字符串
  • 描述:在幫助消息中用于參數值的名稱。如果參數有多個值(如由 nargs 指定),則可以使用 {0}{1} 等來指定每個值的名稱。
  • 示例"FILE"

代碼示例

import argparseparser = argparse.ArgumentParser(description='Example of add_argument()')# 添加一個簡單的參數
parser.add_argument('--count', type=int, default=1, help='number of items')# 添加一個布爾參數
parser.add_argument('--verbose', action='store_true', help='increase output verbosity')# 添加一個具有多個值的參數
parser.add_argument('--files', nargs='+', type=argparse.FileType('r'), help='input files')# 解析命令行參數
args = parser.parse_args()# 使用參數
print(f"Count: {args.count}")
print(f"Verbose: {'on' if args.verbose else 'off'}")
for file in args.files:print(f"File: {file.name}")

在這個示例中,我們添加了三個參數:--count 是一個簡單的整數參數,--verbose 是一個布爾參數,--files 是一個接受多個文件路徑的參數。


世間文字八萬個,唯有一字最是能殺人:情字可誤人,情字可殺人。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39917.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39917.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39917.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TCP粘包解決方法

一. 產生原因及解決方法 產生原因:TCP是面向連接、基于字節流的協議,其無邊界標記。當服務端處理速度比不其接收速度時,就很容易產生粘包現象。 解決方法:目前主要有兩種解決方法,一個是在內容中添加分割標識&#xf…

人臉識別考勤系統

人臉識別考勤系統是一種利用生物識別技術進行自動身份驗證的現代解決方案,它通過分析和比對人臉特征來進行員工的出勤記錄。這種系統不僅提升了工作效率,還大大減少了人為錯誤和欺詐行為的可能性。 一、工作原理 人臉識別考勤系統的核心在于其生物識別…

深入剖析Python中的Pandas庫:通過實戰案例全方位解讀數據清洗與預處理藝術

引言 隨著大數據時代的到來,數據的質量直接影響到最終分析結果的可靠性和有效性。在這個背景下,Python憑借其靈活強大且易于上手的特點,在全球范圍內被廣泛應用于數據科學領域。而在Python的數據處理生態中,Pandas庫無疑是最耀眼…

高級策略:解讀 SQL 中的復雜連接

了解基本連接 在深入研究復雜連接之前,讓我們先回顧一下基本連接的基礎知識。 INNER JOIN:根據指定的連接條件檢索兩個表中具有匹配值的記錄。LEFT JOIN:從左表檢索所有記錄,并從右表中檢索匹配的記錄(如果有&#x…

管道支架安裝

工程結構施工完畢后,系統管道安裝完畢后的第一步任務就是管道支架的制作安裝,作為對管道固定和承重作用至關重要的支、托、吊架,有些項目部在施工中卻往往因為對它們的重要性認識不足,因存在僥幸心里或經驗主義,導致支…

NIO為什么會導致CPU100%?

1. Java IO 類型概覽 BIO:阻塞I/O,每個連接一個線程,簡單但遇到高并發時性能瓶頸明顯。NIO:非阻塞I/O,JDK 1.4引入,一個線程處理多個IO操作,提高資源利用率和系統吞吐量。AIO:異步I…

技術探索:利用Python庫wxauto實現Windows微信客戶端的全面自動化管理

項目地址:github-wxauto 點擊即可訪問 項目官網:wxauto 點擊即可訪問 😂什么是wxauto? wxauto 是作者在2020年開發的一個基于 UIAutomation 的開源 Python 微信自動化庫,最初只是一個簡單的腳本,只能獲取消息和發送…

kpatch Patch Author Guide

kpatch Patch Author Guide Because kpatch-build is relatively easy to use, it can be easy to assume that a successful patch module build means that the patch is safe to apply. But in fact that’s a very dangerous assumption. 由于 kpatch-build 比較容易使用…

精通Spring Cloud: Spring Cloud Config面試題詳解及參考答案(3萬字長文)

解釋Spring Cloud Config的基本功能和它在微服務架構中的作用 Spring Cloud Config是一個用于集中管理和外部化配置的工具。其核心功能在于允許開發者將配置從代碼中分離出來,放置于一個中央存儲庫中,從而簡化了配置管理,提高了應用程序的可維護性和靈活性。在微服務架構中…

論文的3個創新點方向

1、數據分析創新 通過對現有數據的分析,發現新的模式或趨勢,提出新的假設或理論的方法。隨著大數據和人工智能技術的發展,數據分析在科學研究中也有很多的創新。 可以通過實驗、調查、模擬、現場等方式收集相關數據。數據的質量和數量是數據…

掌握MySQL基礎命令:數據更新操作詳細操作(數據的增刪改)

MySQL數據修改是指使用SQL語句(如UPDATE、INSERT、DELETE)對數據庫表中的數據進行更改、添加或刪除的操作,常見的操作包括更新表中的記錄、插入新記錄以及刪除現有記錄 。 一、數據插入 1插入完整的數據記錄 2插入非完整的數據記錄 3插入多…

探討SpringMVC的工作原理

SpringMVC是Spring框架的一部分,是用于構建Web應用程序的一個模塊。SpringMVC遵循Model-View-Controller(MVC)設計模式,幫助開發者將應用程序的業務邏輯、控制邏輯和表示層分離。以下是SpringMVC的工作原理及其核心組件的詳細介紹…

Oracle數據庫導入導出詳解

在數據庫管理和維護過程中,數據的導入與導出是常見的需求,特別是在數據遷移、備份或數據分析等場景下尤為重要。Oracle數據庫作為企業級的數據庫管理系統,提供了強大的數據導入導出工具。本文將詳細介紹Oracle數據庫中數據導入和導出的常用方…

macOS使用Karabiner-Elements解決羅技鼠標G304連擊、單擊變雙擊的故障

記錄一下羅技鼠標G304單擊變雙擊的軟件解決過程和方案(適用于macOS, 如果是Windows,使用AutoHotKey也有類似解決辦法、方案,改日提供): 背景:通過羅技Logitech G HUB軟件對羅技的游戲鼠標側鍵b…

攝像機反求跟蹤軟件/插件 Mocha Pro 2024 v11.0.2 CE Win

AE/PR/OFX/達芬奇/AVX插件 | 攝像機反求跟蹤軟件Mocha Pro 2024 v11.0.2 CE Win-PR模板網 Mocha Pro 軟件(插件),用于平面運動跟蹤、3D跟蹤、動態觀察、對象移除、圖像穩定和PowerMesh有機扭曲跟蹤等功能。整合了SynthEyes核心的3D跟蹤算法,能夠快速自動…

k8s-第四節-Service

Service Service 通過 label 關聯對應的 PodServcie 生命周期不跟 Pod 綁定,不會因為 Pod 重創改變 IP提供了負載均衡功能,自動轉發流量到不同 Pod可對集群外部提供訪問端口集群內部可通過服務名字訪問 創建 Service kubectl apply -f service.yamlkub…

math.round和math.floor相互轉化

在Python中,math.round() 函數用于對浮點數進行四舍五入到最接近的整數,而 math.floor() 函數則是直接取浮點數的整數部分,即向下取整。如果你需要在 math.round() 和 math.floor() 之間進行某種“相互轉化”,實際上,你…

003-基于Sklearn的機器學習入門:回歸分析(上)

本節及后續章節將介紹機器學習中的幾種經典回歸算法,所選方法都在Sklearn庫中聚類模塊有具體實現。本節為上篇,將介紹基礎的線性回歸方法,包括線性回歸、邏輯回歸、多項式回歸和嶺回歸等。 2.1 回歸分析概述 回歸(Regression&…

11 - matlab m_map地學繪圖工具基礎函數 - 繪制航跡、橢圓、風向玫瑰圖和特定的圓形區域的有關函數及其用法

11 - matlab m_map地學繪圖工具基礎函數 - 繪制航跡、橢圓、風向玫瑰圖和特定的圓形區域的有關函數及其用法 0. 引言1. 關于m_track2. 關于m_range_ring3. 關于m_ellipse4. 關于m_windrose5. 結語 0. 引言 本篇介紹下m_map中繪制航跡圖函數(m_track)、繪…

python 發布應用程序包

文章目錄 發布python包toml配置文件構建發布python包 官方文檔參考 將自己的python項目發布成源碼包或者wheel二進制包,供其他開發者使用。 方式: 使用py工具; distutils,該工具的使用已過時;setuptools,常用方式;wheel,在setuptools的基礎上添加了 bdist_wheel, …