如何使用Python對參數(shù)進行解析
通常情況下,在讀取命令行的參數(shù)時诀黍,我用的就是sys
庫髓抑, 讀取輸入的參數(shù)進行處理
import sys
arg1 = sys.argv
由于很多腳本就我自己一個人用咙崎,所以這樣寫沒啥問題。但是如果要給別人用吨拍,或者時間過得久遠些褪猛,那么就得要把參數(shù)使用說明寫的具體些,方便將來使用羹饰。
Python提供了argparse
庫伊滋,讓我們更加容易的進行命令行參數(shù)解析。簡略流程為队秩,先用ArgumentParser
創(chuàng)建參數(shù)解析對象ArgumentParser
笑旺,再用add_argument()
在解析對象里添加要解析的參數(shù). 最后用parse_args()
進行解析,返回參數(shù)所在的命名空間馍资。如果涉及到子命令筒主,則還需要add_subparsers
。
基礎
讓我們先用一個簡單的例子了解下argparse
的功能
#!/usr/bin/env python
# prog.py
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
以不同方式運行代碼
$ python multi_pilon.py
$ python multi_pilon.py --help
usage: multi_pilon.py [-h]
optional arguments:
-h, --help show this help message and exit
$ python multi_pilon.py --verbose
usage: multi_pilon.py [-h]
multi_pilon.py: error: unrecognized arguments: --verbose
當我們不傳遞任何參數(shù)時,腳本不會輸出任何信息乌妙;當我們用--help
時使兔,得到了腳本的一些使用說明;當我們傳入其他沒有聲明的參數(shù)時藤韵,腳本輸出了報錯信息虐沥。
位置參數(shù)
位置參數(shù)就是在命令后面跟著的不以-
或--
開頭的參數(shù), 舉個例子
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)
代碼運行
$ python prog.py
usage: prog.py [-h] echo
prog.py: error: too few arguments
$ python prog.py foo
foo
我們用add_argument()
方法增加了待解析的位置參數(shù)。這時如果不提供足夠多的參數(shù)泽艘,運行程序時就會出現(xiàn)報錯信息置蜀。當提供對應參數(shù)時,代碼就能正常運行悉盆。
add_arguments()
可以傳入多個參數(shù)盯荤,比較常用的是help
和type
, 一個能用于完善幫助信息,一個則是讓python自動完成數(shù)據(jù)類型的轉換
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",type =int)
args = parser.parse_args()
print(args.square ** 2)
代碼執(zhí)行的結果如下
$ python prog.py -h
usage: prog.py [-h] square
positional arguments:
square display a square of a given number
optional arguments:
-h, --help show this help message and exit
$ python prog.py 2
4