python命令行参数总结-Python的命令行参数解析

命令行参数解析在编程语言中基本都会碰到,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

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

100

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

100

0.01

ArgumentParser类创建时的参数如下:

prog - 程序的名字(默认:sys.argv[0])

usage - 描述程序用法的字符串(默认:从解析器的参数生成)

description - 参数帮助信息之前的文本(默认:空)

epilog - 参数帮助信息之后的文本(默认:空)

parents - ArgumentParser 对象的一个列表,这些对象的参数应该包括进去

formatter_class - 定制化帮助信息的类

prefix_chars - 可选参数的前缀字符集(默认:"-")

fromfile_prefix_chars - 额外的参数应该读取的文件的前缀字符集(默认:None)

argument_default - 参数的全局默认值(默认:None)

conflict_handler - 解决冲突的可选参数的策略(通常没有必要)

add_help - 给解析器添加-h/–help 选项(默认:True)

add_argument函数的参数如下:

name or flags - 选项字符串的名字或者列表,例如foo 或者-f, --foo。

action - 在命令行遇到该参数时采取的基本动作类型。

nargs - 应该读取的命令行参数数目。

const - 某些action和nargs选项要求的常数值。

default - 如果命令行中没有出现该参数时的默认值。

type - 命令行参数应该被转换成的类型。

choices - 参数可允许的值的一个容器。

required - 该命令行选项是否可以省略(只针对可选参数)。

help - 参数的简短描述。

metavar - 参数在帮助信息中的名字。

dest - 给parse_args()返回的对象要添加的属性名称。

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值