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

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

1、定义:argparse是python标准库里面用来处理命令行参数的库

2、命令行参数分为位置参数和选项参数:
        位置参数就是程序根据该参数出现的位置来确定的
                如:[root@openstack_1 /]# ls root/    #其中root/是位置参数
        选项参数是应用程序已经提前定义好的参数,不是随意指定的
                如:[root@openstack_1 /]# ls -l    # -l 就是ls命令里的一个选项参数

 3、使用步骤:

(1)import argparse    首先导入模块
                        (2)parser = argparse.ArgumentParser()    创建一个解析对象
                        (3)parser.add_argument()    向该对象中添加你要关注的命令行参数和选项
                        (4)parser.parse_args()    进行解析

 4、argparse.ArgumentParser()方法参数须知:一般我们只选择用description

 prog=None     - 程序名

        
description=None,    - help时显示的开始文字
         
epilog=None,     - help时显示的结尾文字
        
parents=[],        -若与其他参数的一些内容一样,可以继承
        
formatter_class=argparse.HelpFormatter,     - 自定义帮助信息的格式
        
prefix_chars='-',    - 命令的前缀,默认是‘-’
        
fromfile_prefix_chars=None,     - 命令行参数从文件中读取
        
argument_default=None,    - 设置一个全局的选项缺省值,一般每个选项单独设置
        
conflict_handler='error',     - 定义两个add_argument中添加的选项名字发生冲突时怎么处理,默认处理是抛出异常
        
add_help=True    - 是否增加-h/--help选项,默认是True)

 5、add_argument()方法参数须知:

  name or flags...    - 必选,指定参数的形式,一般写两个,一个短参数,一个长参数

import argparse parser = argparse.ArgumentParser() parser.add_argument('echo')     # add_argument()指定程序可以接受的命令行选项 args = parser.parse_args()      # parse_args()从指定的选项中返回一些数据 print(args) print(args.echo)
结果:
G:\flower\python\arg_parse>python demo1.py foo
Namespace(echo='foo')
foo

 action 表示值赋予键的方式,这里用到的是bool类型,action意思是当读取的参数中出现指定参数的时候的行为

help 可以写帮助信息 

parser = argparse.ArgumentParser(description = 'this is a description') parser.add_argument('--ver', '-v', action = 'store_true', help = 'hahaha') # 将变量以标签-值的字典形式存入args字典 args = parser.parse_args() if args.ver:     print("Ture") else:     print("False")
结果:
G:\flower\python\arg_parse>python demo1.py -v

 

Ture
 
G:\flower\python\arg_parse>python demo1.py -j
usage: demo1.py [-h] [--ver]
demo1.py: error: unrecognized arguments: -j

   required    - 必需参数,通常-f这样的选项是可选的,但是如果required=True那么就是必须的了

 type   - 指定参数类型

# required标签就是说--ver参数是必需的,并且类型为int,输入其它类型会报错 parser.add_argument('--ver', '-v', required = True, type = int)
结果:

 

G:\flower\python\arg_parse>python demo1.py -v 1
Ture
 
G:\flower\python\arg_parse>python demo1.py -v ss
usage: demo1.py [-h] --ver VER
demo1.py: error: argument --ver/-v: invalid int value: 'ss'

  choices    - 设置参数的范围,如果choice中的类型不是字符串,要指定type

表示该参数能接受的值只能来自某几个值候选值中,除此之外会报错,用choice参数即可

 

parser.add_argument('file', choices = ['test1', 'test2']) args = parser.parse_args() print('read in %s'%(args.file))
结果:
G:\flower\python\arg_parse>python demo1.py test1
read in test1

 nargs    - 指定这个参数后面的value有多少个,默认为1

# 表示脚本可以读入两个整数赋予num键(此时的值为2个整数的数组) parser.add_argument('filename', nargs = 2, type = int) args = parser.parse_args() print('read in %s'%(args.filename))
结果:
G:\flower\python\arg_parse>python demo1.py 1 2 3

 

usage: demo1.py [-h] filename filename
demo1.py: error: unrecognized arguments: 3
分析:nargs还可以'*'用来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值;‘+’表示读取至少1个该位置参数。'?'表示该位置参数要么没有,要么就只要一个。(PS:跟正则表达式的符号用途一致。)
如:
parser.add_argument('filename', nargs = '+', type = int) args = parser.parse_args() print('read in %s'%(args.filename))

  dest   - 设置这个选项的value解析出来后放到哪个属性中

parser.add_argument('-file', choices = ['test1', 'test2'], dest = 'world') args = parser.parse_args() print('read in %s'%(args.world))

转载于:https://www.cnblogs.com/yksgzlyh/p/10205809.html

你可能感兴趣的文章
css问题小计
查看>>
Laravel学习笔记(三)数据库 数据库迁移
查看>>
ORACLE查看并修改最大连接数
查看>>
box-flex不均分问题
查看>>
Python--GIL 详解
查看>>
Oracle数据导入Mysql中
查看>>
BZOJ-4424 &&CodeForces-19E Fairy DP+dfs (Link-Cut-Tree可A)
查看>>
MongoDB学习笔记——聚合操作之group,distinct,count
查看>>
大道至简读后感(第四章)
查看>>
IDA IDC Tutorials: Additional Auto-Commenting
查看>>
k8s-存储卷1-十二
查看>>
在Android中Intent的概念及应用(二)——Intent过滤器相关选项
查看>>
第十六章 多态性(一)
查看>>
INSERT IGNORE INTO / REPLACE INTO
查看>>
Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
查看>>
【刷题】SPOJ 705 SUBST1 - New Distinct Substrings
查看>>
IEEE 754浮点数表示标准
查看>>
declare 结构用来设定一段代码的执行指令
查看>>
图解算法读书笔记
查看>>
调试学习笔记
查看>>