python argparse模块

本文介绍了Python的argparse模块,它是用于解析命令行参数和选项的标准模块。详细阐述了其使用步骤,包括导入模块、实例化对象、加入参数或选项、获取参数等,还说明了添加位置参数、设置参数说明、数据类型、使用文件作参数、定义默认值等具体操作。

argparse模块

argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块

使用步骤

import argparse  # 1 导入模块,这个没什么说的

parser = argparse.ArgumentParser()  # 2 实例化一个对象,默认参数一堆,只有description参数可以设置一下

parser.add_argument()  # 3 一次加入每一个参数或选项,主要是这里

parser.parse_args()  # 4 获取参数,用的时候给他赋个值

1添加位置参数 

import argparse

#位置参数
def test01():
    # 先不添加参数
    parser = argparse.ArgumentParser(description='解析命令行参数')
    args = parser.parse_args()
    #  打印一下所有参数
    print(args)

上面的例子运行后,由于没有添加任何参数,所以看不出什么。不过可以加上-h 或 --help 运行一下,会显示我们自定义的description的内容,以及默认的help的内容
运行结果:

命令行运行结果:

2 添加参数说明
 

def test02():
    # 这里的关键参数去掉了,看看和刚才比缺少了什么
    parser = argparse.ArgumentParser()
    parser.add_argument('echo')  # 添加一个位置参数
    args = parser.parse_args()
    print(args.echo)  # 获取参数,打印出来
    print(args)  # 看看整个的内容
if __name__ =="__main__":
    test02()

此时再运行程序,会提示你缺少参数。必须带上一个参数运行,比如test.py arg_test。并且后面的参数只能是1个,就是不能多也不能少。

运行结果:

命令行运行结果:

3 设置参数的数据类型

def test03():
    parser = argparse.ArgumentParser(description='解析命令行参数')
    parser.add_argument('echo', help='直接打印这个参数的值', type=int)
    args = parser.parse_args()
    print(args.echo, type(args.echo))  # 获取参数,打印出来
    print(args)  # 看看整个的内容
if __name__ =="__main__":
    test03()

运行结果: 

命令行运行结果:

4 使用文件作为参数

#使用文件作为参数
def test04():
    parser = argparse.ArgumentParser()
    parser.add_argument('file', type=argparse.FileType('r'))  # 读取文件
    args = parser.parse_args()# 打印文件内容
    for line in args.file:
        print(line.strip())
if __name__ =="__main__":
    test04()

 

命令行运行结果:

5 定义默认值

 

从刚才开始必须要带参数才能运行程序了,可以通过设置默认值来解决不带参数启动的问题

 

命令行运行结果:

6 参数候选值

使用choise关键参数,可以限定这个参数的值必须在候选的列表内。
def test06():
    parser = argparse.ArgumentParser(description='解析命令行参数')
    parser.add_argument('echo', choices=['a', 'b', 'c'], default='a', nargs='?')
    args = parser.parse_args()
    print(args.echo, type(args.echo))  # 获取参数,打印出来
    print(args)  # 看看整个的内容
if __name__ =="__main__":
    test06()

这样只有输入正确才能正常执行,这里注意,如果有default,那么default的值也得再候选值之中。 

7 选项参数

像-h 和 --help 一样,也可以设置自己的选项参数。设置的时候短参数和长参数可以值设置一个,如果没有冲突的话建议都写上。另外上面讲过的那些关键参数,比如说明、默认值、候选值都可以使用
#选项参数
def test07():
    parser = argparse.ArgumentParser(description='解析命令行参数')
    parser.add_argument('-v', '--verbose', help='increase verbosity')
    args = parser.parse_args()
    print(args.verbose, type(args.verbose))  # 获取参数,打印出来
    print(args)  # 看看整个的内容
if __name__ =="__main__":
    test07()

如果有长参数,取值的时候就是使用长参数的名字取值。只有短参数的情况下才是用短参数的名字取值。当然也可以指定一个别的变量名。 和位置参数相反,选项参数默认是非必须。不输入选项的情况下取到的值是None,输入选项但是又没在后面写值而且也没默认值,则会出错。 如果需要,也可以将选项设置为必须输入。

运行结果:

命令行运行结果:

8 指定选项参数的默认名

使用required=True 后,这个选项就不再是可选的了,而是必须输入

#指定选项参数的变量名
def test08():
    parser = argparse.ArgumentParser(description='解析命令行参数')
    parser.add_argument('-v', '--verbose', help='increase verbosity',
                        dest='ver',required=True)  # 用dest来指定变量名
    args = parser.parse_args()
    print(args.ver, type(args.ver))  # 获取参数,打印出来。这里的变量名是自己在dest里指定的了
    print(args)  # 看看整个的内容
if __name__ =="__main__":
    test08()

参考自https://www.imooc.com/article/34047

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值