Python的命令列引數解析

2021-08-08 03:47:30 字數 3278 閱讀 3850

命令列引數解析在程式語言中基本都會碰到,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

print

type

(param1)

print

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...