參考:
博客園 | Python解析命令行讀取參數(shù) -- argparse模塊
公眾號(hào) | 生信菜鳥(niǎo)團(tuán) | python:argparse用于命令行參數(shù)解析
公眾號(hào) | Python 命令行之旅 —— 深入 argparse (一)
公眾號(hào) | Python 命令行之旅 —— 深入 argparse (二)
公眾號(hào) | Python 基礎(chǔ)(二十一):argparse 模塊
argparse — 解析命令參數(shù)和選項(xiàng)
簡(jiǎn)單學(xué)習(xí)了一下枚荣,夠自己用就行了玻孟。
$ cat test.py
#!python3
import argparse
def create_parser():
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--version", action="version", version="0.0.1")
parser.add_argument("-i", "--infile") # 以 - 開(kāi)頭,如果不以 - 開(kāi)頭见间,視為位置參數(shù)
parser.add_argument("-o", "--outfile", default="outfile")
sub_parser = parser.add_subparsers()
sub_seq = sub_parser.add_parser("seq") # 設(shè)置子命令 seq
sub_seq.add_argument("-w", "--width", type=int)
sub_grep = sub_parser.add_parser("grep") # 設(shè)置子命令 grep
sub_grep.add_argument("-f", "--file", nargs="*")
return parser
if __name__ == "__main__":
parser = create_parser()
args = parser.parse_args()
print(vars(args))
print(args.infile)
$ python3 test.py -v
0.0.1
$ python3 test.py -i test_file
{'infile': 'test_file', 'outfile': 'outfile'}
test_file
$ python3 test.py -h
usage: test.py [-h] [-v] [-i INFILE] [-o OUTFILE] {seq,grep} ...
positional arguments:
{seq,grep}
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-i INFILE, --infile INFILE
-o OUTFILE, --outfile OUTFILE
$ python3 test.py grep -h
usage: test.py grep [-h] [-f [FILE [FILE ...]]]
optional arguments:
-h, --help show this help message and exit
-f [FILE [FILE ...]], --file [FILE [FILE ...]]
-
parser = argparse.ArgumentParser()
: 添加描述信息,可為空
-
usage
: 使用供搀,自動(dòng)生成 -
description
: 描述信息 -
epilog
楚午、prog
......
-
sub_parser = parser.add_subparsers()
: 添加子命令
sub_seq = sub_parser.add_parser("seq")
-
parser.add_argument()
: 添加選項(xiàng)
-
help
: 參數(shù)描述 -
version
: 版本號(hào) -
default
: 默認(rèn)值 -
choices
: 可選參數(shù)范圍 -
required
: 是否一定要設(shè)置該選項(xiàng)
required=True
required=False
-
type
: 指定參數(shù)類(lèi)型,默認(rèn)str
type=int/float/bool
: 整數(shù)/浮點(diǎn)數(shù)/邏輯型
type=open
type=limit
-
nargs
: 選項(xiàng)后參數(shù)個(gè)數(shù)
nargs=3
: 要求3個(gè)參數(shù)
nargs="*"
: 允許0或多個(gè)參數(shù)
nargs="?"
: 要求0或1個(gè)參數(shù)
nargs="+"
: 要求至少1個(gè)參數(shù) -
const
: 指定了選項(xiàng)伴挚,但沒(méi)指定參數(shù)時(shí),取const
設(shè)定的值灾炭,而不取default
的值。在nargs="?"
或action="store_const"
時(shí)有用颅眶。 -
action
: 接收命令行參數(shù)后如何處理
action="store"
: 保存參數(shù)值蜈出,默認(rèn)
action="store_const"
: 設(shè)定選項(xiàng)后,將參數(shù)的值解析為const
的值
action="store_true"
: 設(shè)定選項(xiàng)后涛酗,將參數(shù)值自動(dòng)解析為True
action="store_false"
: 設(shè)定選項(xiàng)后铡原,將參數(shù)值自動(dòng)解析為False
action="append"
: 存儲(chǔ)為一個(gè)列表,多次使用一個(gè)選項(xiàng)時(shí)使用
action="append_const"
: 存儲(chǔ)為一個(gè)列表商叹,將const
的值追加到列表
action="count"
: 統(tǒng)計(jì)一個(gè)選項(xiàng)出現(xiàn)的次數(shù) -
dest
燕刻、matavar
...... 不會(huì),先不管
parser.parse_args()
: 解析parser.print_help()
: 打印描述信息
還有很多剖笙,比如選項(xiàng)沖突......