一、什麼是命令行參數
命令行參數是指在運行程序時給程序傳遞的參數,通常包括程序本身路徑和用戶輸入的參數。例如,在命令行中運行python程序時,可以在程序名後面添加參數,例如:
python myprogram.py arg1 arg2
這裡`myprogram.py`是程序名,`arg1`和`arg2`是用戶傳遞的參數。在程序中,可以使用各種方法來解析這些參數,例如分割字符串或使用正則表達式,但這些方法都需要開發人員編寫大量的代碼,而且不夠靈活。Python提供了一個標準模塊——argparse,可以幫助快速解析命令行參數。
二、使用argparse解析命令行參數
argparse模塊是Python標準庫中用於解析命令行參數的模塊,已經自帶於Python3中,不需要安裝。以下是一個使用argparse模塊解析命令行參數的示例。
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
以上代碼中,`argparse.ArgumentParser`用於創建一個解析器,`description`用於指定程序的幫助信息,`add_argument`用於添加參數。`add_argument`有以下常用參數:
- `name or flags` – 參數的名稱或者選項,例如`foo`或`–foo`。
- `action` – 參數遇到時的響應動作,默認值是「store」。
- `type` – 命令行參數應當被轉換成的類型。支持的類型包括`int`、`float`、`str`等。
- `choices` – 可選參數的可選值。
- `required` – 是否必選。
- `default` – 默認值。
- `help` – 參數的幫助信息。
例如,`parser.add_argument(‘integers’, metavar=’N’, type=int, nargs=’+’, help=’an integer for the accumulator’)`指定了一個位置型參數`integers`,用於傳遞整數,而且必須至少傳遞一個。`nargs`參數指定接受的選項數,`+`表示一個或多個,`*`表示零個或多個。
使用以上程序來運行命令行可以如下所示:
$ python prog.py -h
usage: prog.py [-h] [--sum] N [N ...]
Process some integers.
positional arguments:
N an integer for the accumulator
optional arguments:
-h, --help show this help message and exit
--sum sum the integers (default: find the max)
以上程序中的`-h`選項用於打印幫助信息。如果使用如下命令,則傳遞參數`4`、`2`、`3`:
$ python prog.py 4 2 3
4
執行結果為`4`。
三、使用argparse的應用場景
argparse可以用於解析各種命令行參數,包括位置型參數、可選參數、布爾型參數等。以下是一些使用argparse的實例。
1. 位置型參數和可選參數
以下是一個使用位置型參數和可選參數的示例:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('name', type=str, help='Username')
parser.add_argument('--age', type=int, help='Age')
parser.add_argument('--gender', type=str, help='Gender')
args = parser.parse_args()
print(f"Username: {args.name}")
if args.age:
print(f"Age: {args.age}")
if args.gender:
print(f"Gender: {args.gender}")
以上程序中,`parser.add_argument(‘name’, type=str, help=’Username’)`指定了一個位置型參數`name`,用於傳遞字符串類型的參數,`parser.add_argument(‘–age’, type=int, help=’Age’)`和`parser.add_argument(‘–gender’, type=str, help=’Gender’)`分別指定了兩個可選參數`age`和`gender`。
如果使用如下命令來運行以上程序:
$ python user.py john --age 30 --gender male
Username: john
Age: 30
Gender: male
執行結果為:
Username: john
Age: 30
Gender: male
2. 布爾型參數
以下是一個使用布爾型參數的示例:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', action='store_true', help='increase output verbosity')
args = parser.parse_args()
if args.verbose:
print('Verbose output enabled')
以上程序中,`parser.add_argument(‘–verbose’, action=’store_true’, help=’increase output verbosity’)`指定了一個可選參數`verbose`,如果這個參數被設置為`True`,則程序會打印出`Verbose output enabled`。
如果使用如下命令來運行以上程序:
$ python verbose.py --verbose
Verbose output enabled
執行結果為:
Verbose output enabled
四、總結
在Python中,可以使用argparse模塊來快速解析命令行參數,它支持各種類型的命令行參數,包括位置型參數、可選參數、布爾型參數等。argparse模塊靈活易用,可以幫助開發者快速開發命令行工具。
原創文章,作者:TLNV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/147679.html