前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-argparse模块

Python-argparse模块

作者头像
Tommonkey
发布2023-02-27 20:42:39
4470
发布2023-02-27 20:42:39
举报
文章被收录于专栏:TommonkeyTommonkey

最近在GitHub上欣赏别人写的代码,发现一个常用的模块–argparse,居然我到现在才知道,简直是罪过,于是马上开始了这个模块用法的学习,这样后面我在写的时候就可以摈弃input()函数来交互了。这个模块是python内置所有是不需要安装的,我们直接import即可。

argparse模块的功能

该模块可以在命令模式下完成使用者与程序之间的参数交互,并且这个模块会自动生成help菜单,让使用者可以通过 -h|–help查看程序的使用方法等。

使用方法

这里主要分四步:

import导入该模块:import argparse

创建解析器对象:parse = argparse.ArgumenParser()

添加需要的命令行参数与选项:parse.add_argument()

解析:parse.parse_args() 这里主要介绍一下第二,三步中这两个方法的使用。 先贴出argparse.ArgumenParser()中的可选参数及其含义:

代码语言:javascript
复制
| 名字            | 默认值              | 功能                                            |
| --------------- | ------------------- | ----------------------------------------------- |
| prog            | sys.argv\[0\]       | `-h`时显示的程序名                              |
| usage           | -                   | usage字段描述                                   |
| description     | None                | description字段描述                             |
| epilog          | None                | 补充字段描述                                    |
| parents         | None                | 从父(公共)解析器中继承所有的参数选项            |
| formatter_class | None                | 定制说明文本的显示风格                          |
| prefix_class    | -                   | 定制前缀字符,例如前缀**"-b"**改为**“+b"**      |
| add_help        | True                | 是否使能显示参数 `-h --help`                    |
| allow_abbrev    | True                | 是否支持长参数                                  |

parse.add_argument()中的可选参数及其含义:

代码语言:javascript
复制
| 名字            | 功能                                            |
| --------------- | ---------------------------------------------------------- |
| action          | 匹配到后的行为,如action="store_true",设置为布尔值为true   |
| nargs           | 选项跟随的个数                                             |
| default         | 设置默认值                                                 |
| type            | 设置参数的类型                                             |
| choices         | 设置参数值范围                                             |
| requred         | 设置参数是否为必选项                                       |
| dest            | 设置help中显示的参数名和名字空间中的属性值名               |

实列

这里贴出我写的简单列子来辅助说明该模块的使用方法

代码语言:javascript
复制
# author:Tommonkey
# date:2022/5/4

import sys
import argparse

def arg_parse():
    # 构造解析器
    parse = argparse.ArgumentParser(prog="test.py",usage="huw to use this program",description="this just a test,don't worry!")
    # 添加参数
    # dest值设置namespace中属性值的名称
    parse.add_argument("-n","--name",dest="name",type=str,default="****",required=False,help="output you name")
    parse.add_argument("-b","--birthday",dest="bir",type=str,default="2000/1/1",required=False,help="output you birthday")
    # metavar:定制help选项带的参数名,只影响help的输出,跟dest不一样
    parse.add_argument("-p","--phone",metavar="hahaha",required=False,help="output your phone")
    parse.add_argument("-i", "--info",action="store_true",help="output you info")
    # 解析
    result = parse.parse_args()
    return result


if __name__ == "__main__":
    obj = arg_parse()
    # 通过sys.argv[]列表读取命令行下运行py程序时的参数,这里是首先获取参数的个数
    print(len(sys.argv))
    # 打印输出第三个参数,即打印名字
    print(sys.argv[2])
    # 打印名字空间,可查看 属性名:值
    print(obj)
    # 通过属性值来调用其值
    print(obj.name,obj.bir)
    print(obj.phone)
    print(obj.info)

命令行启动该py文件的结果:

代码语言:javascript
复制
PS D:\Work_pycharm> python .\1.py -h  
usage: huw to use this program                         

this just a test,don't worry!

optional arguments:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  output you name
  -b BIR, --birthday BIR
                        output you birthday
  -p hahaha, --phone hahaha
                        output your phone
  -i, --info            output you info
PS D:\Work_pycharm> python .\1.py -n tommonkey   
3
tommonkey
Namespace(bir='2000/1/1', info=False, name='tommonkey', phone=None)
tommonkey 2000/1/1
None
False
PS D:\Work_pycharm> 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • argparse模块的功能
  • 使用方法
  • 实列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档