python基础Python

Python的命令行参数解析

2017-09-13  本文已影响633人  SnailTyan

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse。下面主要介绍两种解析Python命令行参数的方式。

1. sys.argv

解析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']
1
2

这种方法比较古老,灵活性很差,同时解析出来的参数都是str类型。但在编写简单脚本,参数较少且固定时比较方便。

2. argparse

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

ArgumentParser类创建时的参数如下:

add_argument函数的参数如下:

参考资料:

  1. http://python.usyiyi.cn/translate/python_278/library/argparse.html
  2. http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html
上一篇下一篇

猜你喜欢

热点阅读