一、什麼是argparse
Python解釋器能夠讀取命令行輸入,但是當你需要輸入大量參數時,手動輸入命令行會變得非常繁瑣。在Python中,argparse
是一種處理命令行參數的標準模塊。argparse
讓你可以輕鬆的編寫用戶友好的命令行界面。它提供了必選項、可選項、參數解析、類型限制和多項功能處理等功能。
二、使用argparse解析命令行參數
使用argparse
必須先創建一個ArgumentParser
對象,然後在該對象上添加選項。
import argparse
parser = argparse.ArgumentParser(description='對命令行參數進行解析')
# 添加必傳選項
parser.add_argument('integers', type=int, nargs='+', help='一組數字')
# 添加可選選項
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max, help='默認返回最大值,傳了該選項返回疊加和')
args = parser.parse_args()
print(args.accumulate(args.integers))
上面的代碼創建了一個ArgumentParser
對象,並添加了兩個選項。必選項integers
用來傳入一組數字,可選項--sum
用來選擇返回疊加和還是最大值。下面是使用該代碼的方式:
$ python program.py 1 2 3 4 5
5
$ python program.py 1 2 3 4 5 --sum
15
三、添加多種不同類型的參數
argparse
支持多種不同類型的參數,例如字元串、整數和浮點數等。下面的示例演示如何添加多個不同類型的參數:
import argparse
parser = argparse.ArgumentParser(description='對命令行參數進行解析')
# 添加必傳選項(整型)
parser.add_argument('integers', type=int, nargs='+', help='一組數字')
# 添加必傳選項(浮點型)
parser.add_argument('source', type=float, help='源數字')
# 添加必傳選項(字元串)
parser.add_argument('destination', type=str, help='目標字元串')
# 添加可選選項(布爾值)
parser.add_argument('--verbose', '-v', action='store_true', help='輸出調試信息')
args = parser.parse_args()
print(args.integers)
print(args.source)
print(args.destination)
print(args.verbose)
上面的代碼創建了一個帶有多種參數類型的ArgumentParser
對象,並添加了一個布爾值可選項--verbose
和-v
。使用方式如下:
$ python program.py 1 2 3 4 5 6.5 destination -v
[1, 2, 3, 4, 5]
6.5
destination
True
四、處理互斥選項
有時候,多個選項之間可能會互相排斥。例如,使用語言選項時可能會要求只使用一個語言選項,而不能同時使用兩個。在這種情況下,可以通過使用argparse
框架中的mutually_exclusive_group
來實現互斥選項。
import argparse
parser = argparse.ArgumentParser(description='對命令行參數進行解析')
group = parser.add_mutually_exclusive_group()
group.add_argument('--foo', action='store_true', help='選項foo')
group.add_argument('--bar', action='store_true', help='選項bar')
args = parser.parse_args()
if args.foo:
print('選中foo')
elif args.bar:
print('選中bar')
上面的代碼通過使用add_mutually_exclusive_group()
方法創建了一個互斥組,並通過add_argument()
方法向該組中添加了兩個選項。argparse
會確保這兩個選項不能同時出現。使用方式如下:
$ python program.py --foo
選中foo
$ python program.py --bar
選中bar
$ python program.py --foo --bar
usage: program.py [-h] [--foo | --bar]
program.py: error: 不能同時指定--foo和--bar
五、處理子命令
當需要解析成一個命令行工具時,很常見的一個操作是添加子命令。例如,假設你想創建一個程序,這個程序有三個子命令,分別為start
、stop
和restart
。你希望通過調用這些子命令來啟動或停止存儲在資料庫中的所需服務。
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='subparser_name')
subparser_start = subparsers.add_parser('start')
subparser_stop = subparsers.add_parser('stop')
args = parser.parse_args()
if args.subparser_name == 'start':
print('選擇了start子命令')
elif args.subparser_name == 'stop':
print('選擇了stop子命令')
上面的代碼創建了一個ArgumentParser
對象,並添加了兩個子命令:start 和 stop。使用方式如下:
$ python program.py start
選擇了start子命令
$ python program.py stop
選擇了stop子命令
六、總結
argparse
是一個非常有用的模塊,可以讓你輕鬆的編寫用戶友好的命令行界面。在本文中,我們了解了如何使用argparse
來處理命令行參數,包括如何添加必須選項和可選項、如何支持多種不同類型的參數和如何處理互斥選項和子命令。相信您已經理解了argparse
的基本用法和實現原理。
原創文章,作者:DLQOS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325327.html