博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 中argparse模块的使用
阅读量:5963 次
发布时间:2019-06-19

本文共 2396 字,大约阅读时间需要 7 分钟。

hot3.png

Python解析命令行读取参数有两种方式:sys.argv和argparse

 

1、sys.argv

如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。

import sysprint("输入的参数为:%s" % sys.argv[1])

 

命令行执行效果:

>python demo.py 1输入的参数为:1

 

2、argparse

如果参数很多,比较复杂,并且类型不统一,那么argparse可以很好的解决这些问题,下面一个实例解释了argparse的基本使用方法。

import argparse# description参数可以用于描述脚本的参数作用,默认为空parser=argparse.ArgumentParser(description="A description of what the program does")parser.add_argument('--toy','-t',action='store_true',help='Use only 50K samples of data')  parser.add_argument('--num_epochs',choices=[5,10,20],default=5,type=int,help='Number of epochs.') parser.add_argument("--num_layers", type=int, required=True, help="Network depth.")args=parser.parse_args() print(args)print(args.toy,args.num_epochs,args.num_layers)

 

命令行执行效果:

>python demo.py --num_epochs 10 --num_layers 10Namespace(num_epochs=10, num_layers=10, toy=False)False 10 10

 

2.1.基本使用

parser.add_argument('--toy','-t',action='store_true',help='Use only 50K samples of data')

 

--toy:为参数名称;

-t:为参数别称; action='store_true':参数是否使用,如果使用则为True,否则为False。

>python demo.py -t --num_epochs 10 --num_layers 10Namespace(num_epochs=10, num_layers=10, toy=True)True 10 10 # 对比和上次执行的区别

help:参数说明

 

2.2.相关参数

实例1

parser.add_argument('--num_epochs',choices=[5,10,20],default=5,type=int,help='Number of epochs.')

 

choices:候选值,输出参数必须在候选值里面,否如会出现下面的结果:

>python demo.py -t --num_epochs 30 --num_layers 10usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERSdemo.py: error: argument --num_epochs: invalid choice: 30 (choose from 5, 10, 20)

 

default:默认值,如果不输入参数,则使用该默认值

>python demo.py -t  --num_layers 10Namespace(num_epochs=5, num_layers=10, toy=True)True 5 10

int:参数类型

 

实例2

parser.add_argument("--num_layers", type=int, required=True, help="Network depth.")

 

required:为必选参数,如果不输入,则出现以下错误:

>python demo.py -t --num_epochs 10usage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERSdemo.py: error: the following arguments are required: --num_layers

 

实例3 -h:输出参数使用说明信息

>python demo.py -husage: demo.py [-h] [--toy] [--num_epochs {5,10,20}] --num_layers NUM_LAYERSA description of what the program doesoptional arguments:-h, --help            show this help message and exit--toy, -t             Use only 50K samples of data--num_epochs {5,10,20}               Number of epochs.--num_layers NUM_LAYERS                Network depth.

 

转载:

转载于:https://my.oschina.net/u/3949328/blog/2054501

你可能感兴趣的文章
MVC中的三个模块
查看>>
Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
查看>>
oracle 常用命令大汇总
查看>>
2012年春运火车票电话和网上订票技巧、攻略
查看>>
运维工程师的职责和前景
查看>>
Gcc编译流程解析
查看>>
根据request获取请求路径
查看>>
mysql 并行复制
查看>>
傲不可长,欲不可纵,乐不可极,志不可满——提高个人修养
查看>>
linux系统增加swap容量的方法
查看>>
远程推送
查看>>
后台调用gps
查看>>
HTML5标签的语义认知和理解(1)
查看>>
MySQL日志功能详解(2)
查看>>
HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?
查看>>
linux之权限之隐藏权限
查看>>
系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常...
查看>>
安全与漏洞工具篇
查看>>
如何用jquery获取input输入框中的值?
查看>>
对datatable的行进行数据填充、增、删、改
查看>>