命令行參數(shù)解析在編程語(yǔ)言中基本都會(huì)碰到,Python中內(nèi)置了一個(gè)用于命令項(xiàng)選項(xiàng)與參數(shù)解析的模塊argparse
。下面主要介紹兩種解析Python命令行參數(shù)的方式。
1. sys.argv
解析Python中命令行參數(shù)的最傳統(tǒng)的方法是通過sys.argv
。Demo如下:
#!/usr/env/python python
# _*_ coding: utf-8 _*_
import sys
param1 = sys.argv[1]
param2 = sys.argv[2]
print sys.argv
print param1
print param2
print type(param1)
print type(param2)
復(fù)制
測(cè)試結(jié)果如下:
$ python test.py 1 2
['test.py', '1', '2']
1
2
復(fù)制
這種方法比較古老,靈活性很差,同時(shí)解析出來的參數(shù)都是str
類型。但在編寫簡(jiǎn)單腳本,參數(shù)較少且固定時(shí)比較方便。
2. argparse
argparse
模塊是Python內(nèi)置的參數(shù)解析模塊,使用起來比較簡(jiǎn)單且功能強(qiáng)大。Demo如下:
#!/usr/env/python python
# _*_ coding: utf-8 _*_
import argparse
# Create ArgumentParser() object
parser = argparse.ArgumentParser()
# Add argument
parser.add_argument('--train', required=True, help='path to dataset')
parser.add_argument('--val', required=True, help='path to dataset')
parser.add_argument('--total', type=int, help='number of dataset', default=100)
parser.add_argument('--lr', type=float, default=0.01, help='learning rate')
# Print usage
parser.print_help()
# Parse argument
args = parser.parse_args()
# Print args
print args
print args.train
print type(args.train)
print args.val
print type(args.val)
print args.total
print type(args.total)
print args.lr
print type(args.lr)
復(fù)制
測(cè)試結(jié)果如下:
# Test 1
python test.py --train train_lmdb --val val_lmdb --total 10000 --lr 0.001
usage: test.py [-h] --train TRAIN --val VAL [--total TOTAL] [--lr LR]
optional arguments:
-h, --help show this help message and exit
--train TRAIN path to dataset
--val VAL path to dataset
--total TOTAL number of dataset
--lr LR learning rate
Namespace(lr=0.001, total=10000, train='train_lmdb', val='val_lmdb')
train_lmdb
<type 'str'>
val_lmdb
<type 'str'>
10000
<type 'int'>
0.001
<type 'float'>
# Test 2
python test.py --train train_lmdb --val val_lmdb
usage: test.py [-h] --train TRAIN --val VAL [--total TOTAL] [--lr LR]
optional arguments:
-h, --help show this help message and exit
--train TRAIN path to dataset
--val VAL path to dataset
--total TOTAL number of dataset
--lr LR learning rate
Namespace(lr=0.01, total=100, train='train_lmdb', val='val_lmdb')
train_lmdb
<type 'str'>
val_lmdb
<type 'str'>
100
<type 'int'>
0.01
<type 'float'>
# Test 3
python test.py --val val_lmdb --train train_lmdb
usage: test.py [-h] --train TRAIN --val VAL [--total TOTAL] [--lr LR]
optional arguments:
-h, --help show this help message and exit
--train TRAIN path to dataset
--val VAL path to dataset
--total TOTAL number of dataset
--lr LR learning rate
Namespace(lr=0.01, total=100, train='train_lmdb', val='val_lmdb')
train_lmdb
<type 'str'>
val_lmdb
<type 'str'>
100
<type 'int'>
0.01
<type 'float'>
復(fù)制
ArgumentParser
類創(chuàng)建時(shí)的參數(shù)如下:文章來源:http://www.zghlxwxcb.cn/news/detail-473743.html
- prog - 程序的名字(默認(rèn):sys.argv[0])
- usage - 描述程序用法的字符串(默認(rèn):從解析器的參數(shù)生成)
- description - 參數(shù)幫助信息之前的文本(默認(rèn):空)
- epilog - 參數(shù)幫助信息之后的文本(默認(rèn):空)
- parents - ArgumentParser 對(duì)象的一個(gè)列表,這些對(duì)象的參數(shù)應(yīng)該包括進(jìn)去
- formatter_class - 定制化幫助信息的類
- prefix_chars - 可選參數(shù)的前綴字符集(默認(rèn):‘-‘)
- fromfile_prefix_chars - 額外的參數(shù)應(yīng)該讀取的文件的前綴字符集(默認(rèn):None)
- argument_default - 參數(shù)的全局默認(rèn)值(默認(rèn):None)
- conflict_handler - 解決沖突的可選參數(shù)的策略(通常沒有必要)
- add_help - 給解析器添加-h/–help 選項(xiàng)(默認(rèn):True)
add_argument
函數(shù)的參數(shù)如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-473743.html
- name or flags - 選項(xiàng)字符串的名字或者列表,例如foo 或者-f, –foo。
- action - 在命令行遇到該參數(shù)時(shí)采取的基本動(dòng)作類型。
- nargs - 應(yīng)該讀取的命令行參數(shù)數(shù)目。
- const - 某些action和nargs選項(xiàng)要求的常數(shù)值。
- default - 如果命令行中沒有出現(xiàn)該參數(shù)時(shí)的默認(rèn)值。
- type - 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類型。
- choices - 參數(shù)可允許的值的一個(gè)容器。
- required - 該命令行選項(xiàng)是否可以省略(只針對(duì)可選參數(shù))。
- help - 參數(shù)的簡(jiǎn)短描述。
- metavar - 參數(shù)在幫助信息中的名字。
- dest - 給parse_args()返回的對(duì)象要添加的屬性名稱。
到了這里,關(guān)于Python的命令行參數(shù)解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!