一、什麼是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-hant/n/330739.html
微信掃一掃
支付寶掃一掃