argparse模塊簡介
今天看到一個同事寫的腳本,腳本中用了argparse模塊。這個模塊之前我沒有使用過,所以需要系統的學習一下。
argparse簡介:
- argparse模塊是python的一個命令行解析包,可以十分方便的對python文件進行命令行讀寫。
- argparse模塊是python中自帶的模塊,不需要再安裝。
- 使用時先導入模塊,import argparse
官網文檔:https://docs.python.org/3/library/argparse.html
1. 簡單使用
步驟:
- 創建 ArgumentParser() 對象
- 調用 add_argument() 方法添加參數
- 使用 parse_args() 解析添加的參數
import argparse
parser = argparse.ArgumentParser() parser.add_argument("square", help="請輸入一個數字", type=int) parser.add_argument("input_str", help="請輸入一個字母", type=str) args = parser.parse_args() print(args.square ** 2) print(args.input_str)
把上面的代碼保存到test_argparse.py文件,
1)命令行運行時,不添加參數:在終端運行python3 test_argparse.py ,運行結果如下:
$python3 test_argparse.py usage: test_argparse.py [-h] square input_str test_argparse.py: error: the following arguments are required: square, input_str
2)命令行運行時加上-h ,查看幫助:執行python3 test_argparse.py -h,運行結果如下:
$ python3 test_argparse.py -h usage: test_argparse.py [-h] square input_str positional arguments: square 請輸入一個數字 input_str 請輸入一個字母 optional arguments: -h, --help show this help message and exit
3) 命令行運行加上參數,按照提示加上一個數字,一個字母:執行python3 test_argparse.py 10 'hello world!' , 運行結果如下
$python3 test_argparse.py 10 'hello world!' 100 hello world!
4)如果輸入的格式不正確,會提示類型不對,例如第1個參數輸入一個字符串,運行結果如下:
$ python3 test_argparse.py 'abcd' 11 usage: test_argparse.py [-h] square input_str test_argparse.py: error: argument square: invalid int value: 'abcd'
2. 添加一個位置參數
上面的例子,其實就展示了定位參數的使用。不在舉例了
3. 為位置參數添加說明
4. 指定可選參數
現在看下可選參數的用法,所謂可選參數,也就是命令行參數是可選的,廢話少說,看下面例子:
parser.add_argument("--square", help="display a square of a given number", type=int) parser.add_argument("--cubic", help="display a cubic of a given number", type=int)
5. 指定參數類型
之前已經提到了用type參數就可以指定輸入的參數類型。而這個type類型還可以表示文件操作的類型從而直接進行文件的讀寫操作。
parser.add_argument('file', type=argparser.FileType('r')) # 讀取文件 args = parser.parse_args() for line in args.file: print line.strip()
6. 為參數添加默認值
一般情況下會設置一些默認參數從而不需要每次輸入某些不需要變動的參數,利用default參數即可實現。
parser.add_argument('filename', default='text.txt')