命令列引數解析在程式語言中基本都會碰到,python中內建了乙個用於命令項選項與引數解析的模組argparse
。下面主要介紹兩種解析python命令列引數的方式。
解析python中命令列引數的最傳統的方法是通過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
type
(param1)
type
(param2)
這種方法比較古老,靈活性很差,同時解析出來的引數都是$ python test.py 1
2['test.py', '1', '2']
12
str
型別。但在編寫簡單指令碼,引數較少且固定時比較方便。
argparse
模組是python內建的引數解析模組,使用起來比較簡單且功能強大。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)
# 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
val_lmdb
10000
0.001
# 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
val_lmdb
1000.01
# 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
val_lmdb
1000.01
argumentparser
類建立時的引數如下:
add_argument
函式的引數如下:
python解析命令列引數
使用乙個先進的模組名為argparse,跟unix程式的命令列引數很像。直接對code做個筆記 import sys import argparse def main args print first name directory s args.first name print first para...
解析命令列引數
include include include include int make argv const char astr,const char delimiters,char argvp void free argv char argvp int main int argc,char argv i...
Python命令列引數解析Demo
文章 python 命令列引數解析demo 寫沒有操作介面的程式時,最討厭的就是引數解析問題,尤其是很多引數那種,下面是乙個小demo,拿出來與各位分享 coding utf8 import os import datetime import sys from optparse import opt...