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

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

1. sys.argv

解析Python中命令行参数的最传统的方法是通过sys.argv。Demo如下:

#!/usr/env/python python
# _*_ coding: utf-8 _*_import sysparam1 = 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 argsprint 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类创建时的参数如下:

  • 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()返回的对象要添加的属性名称。

参考资料:

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

Python的命令行参数解析相关推荐

  1. Python之命令行参数解析

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  2. python argparse命令行参数解析

    argparse是python用于解析命令行参数和选项的标准模块. 很多时候,需要用到解析命令行参数的程序,目的是在终端窗口输入训练的参数和选项. argparse 模块可以让人轻松编写用户友好的命令 ...

  3. windows 下 Python的命令行参数解析 argparse模块 的使用

        argparse模块是Python内置的参数解析模块,相较于传统的 sys.argv 来说,其功能更加的强大,操作也更灵活. ArgumentParser类创建时的参数如下: prog - 程 ...

  4. python带命令行参数解析的文件遍历脚本(找出文件名长度大于某值的文件)

    背景 复制一个目录时,提示有个文件名太长未能复制成功,然后忘记是哪个了,现在要靠脚本把它找出来. 代码 #!/usr/bin/pythonimport getopt import os import ...

  5. python getopt使用_Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...

  6. python命令行参数解析OptionParser类用法实例

    python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下:     from opt ...

  7. Python命令行参数解析模块------argparse

      首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广 ...

  8. Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  9. python 命令行参数-Python 中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要一个命令行参数解析的 ...

最新文章

  1. Erlang--热更新
  2. TCP之三次握手四次挥手 1
  3. 优化我们的业务之Timecard
  4. 部署WSUS2.0+SP1
  5. grub光盘修复,硬盘修复
  6. shell获取当前进程pid和上一个进程pid
  7. 安全方向比路由交换难吗_「网工进阶」路由交换:链路聚合的配置,你都会吗...
  8. Linux基础第五课——用户管理
  9. Android 微信分享
  10. 正能量励志文字手机壁纸
  11. CentOS 7.3:LAMP 动静分离部署
  12. cocos2d-x 绘制图形
  13. 《UNIX环境高级编程——APUE》
  14. 《数字图像处理》实验二
  15. 【译】基于 Rust 用 Bevy 实现节奏大师游戏
  16. 捋一捋Python中的List(上)
  17. scala windows搭建开发环境
  18. 物联网操作系统软件定时器
  19. 万字+图片解析计算机网络应用层
  20. UVA 11426 GCD - Extreme (II) (欧拉函数)

热门文章

  1. matebook x pro 2019 安装ubuntu 16.04
  2. 水之城 Aquatico V1.009.0 官方中文 免安装【4.04G】
  3. CF700E E. Cool Slogans
  4. postgresSQL 时间操作
  5. 曹敏机器人_客服机器人
  6. 社科院调查:视频记录生活体验更美好
  7. HTML四种定位-固定定位
  8. 参与股市投资后的体会
  9. nvm详解(mac环境nvm安装步骤及踩坑问题)
  10. C语言程序设计基础练习题二