一、什麼是argparse
在開發python應用程序時,我們經常需要從命令行獲取一些參數,例如輸入文件名、輸出文件名、執行的操作、以及一些其他的選項和參數。python標準庫中的argparse模塊提供了一種簡單、靈活的方法來處理命令行參數。
argparse模塊可以自動生成幫助信息、處理參數的默認值和類型、支持命令行補全,以及在用戶輸入非法參數時輸出錯誤信息,並提供友好的提示信息等功能。
import argparse parser = argparse.ArgumentParser(description='命令行參數解析器') parser.add_argument('file', help='輸入文件名') parser.add_argument('-o', '--output', help='輸出文件名') parser.add_argument('-v', '--verbose', action='store_true', help='詳細輸出') args = parser.parse_args()
以上代碼創建了一個ArgumentParser對象,並向其添加三個參數:
file
:一個必需參數,用於指定輸入文件的文件名。--output
或-o
:一個可選參數,用於指定輸出文件名。--verbose
或-v
:一個開關參數,用於控制是否輸出詳細信息。
當用戶輸入python argparse_demo.py --help
時,argparse會自動生成一個幫助信息,並顯示給用戶。
usage: argparse_demo.py [-h] [-o OUTPUT] [-v] file 命令行參數解析器 positional arguments: file 輸入文件名 optional arguments: -h, --help show this help message and exit -o OUTPUT, --output OUTPUT 輸出文件名 -v, --verbose 詳細輸出
二、argparse的用法
1. 添加參數
可以使用add_argument()
方法向ArgumentParser對象中添加各種參數。
add_argument()
方法必須指定參數的名稱或縮寫。- 如果參數是必需的,則不需要指定縮寫。
- 如果需要支持負數參數,可以在參數名稱前加上
--
,例如--foo
。
# 添加一個必需參數 parser.add_argument('file', help='輸入文件名') # 添加一個可選參數 parser.add_argument('-o', '--output', help='輸出文件名') # 添加一個開關參數 parser.add_argument('-v', '--verbose', action='store_true', help='詳細輸出')
2. 參數的類型
argparse模塊支持指定參數的類型。
- 字元串類型:默認類型為字元串類型。可以使用
type=str
指定類型。 - 整數類型:可以使用
type=int
指定類型。 - 浮點數類型:可以使用
type=float
指定類型。 - 布爾類型:可以使用
type=bool
指定類型,並使用action='store_true'
或action='store_false'
指定開關參數。
# 添加一個整數類型的參數 parser.add_argument('-n', '--count', type=int, help='重複次數')
3. 參數的默認值
可以使用default
參數指定參數的默認值。
# 添加一個默認值為3的參數 parser.add_argument('-n', '--count', type=int, default=3, help='重複次數')
4. 參數的取值範圍
可以使用choices
參數指定參數的取值範圍。
# 添加一個取值範圍為['py', 'js', 'go']的參數 parser.add_argument('-l', '--lang', choices=['py', 'js', 'go'], help='編程語言')
5. 參數的互斥組
如果某些參數之間是互斥的,可以使用add_mutually_exclusive_group()
方法創建一個互斥組,將這些參數添加到互斥組中。
group = parser.add_mutually_exclusive_group() group.add_argument('-a', '--add', action='store_true', help='添加模式') group.add_argument('-d', '--delete', action='store_true', help='刪除模式')
6. 參數的處理函數
可以使用type
參數指定參數的類型,並使用action
參數指定參數的處理函數。
def read_file(filename): with open(filename, 'r') as f: return f.read() parser.add_argument('file', type=read_file, help='輸入文件名(讀取文件內容)')
7. 自定義幫助文本
可以使用add_help=False
禁用默認幫助信息,使用description
指定自定義幫助信息。
parser = argparse.ArgumentParser(description='命令行參數解析器', add_help=False) parser.add_argument('-h', '--help', action='help', help='幫助信息')
當用戶輸入python argparse_custom_help.py -h
時,輸出自定義的幫助信息。
三、結語
argparse模塊提供了一種簡單、靈活的方法來處理命令行參數,可以處理參數的默認值和類型、生成幫助信息、支持命令行補全等功能。使用argparse可以快速編寫具有良好交互性的命令行工具。
原創文章,作者:XCNCM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330739.html