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

python-argparse

作者头像
零式的天空
发布2022-03-02 20:15:40
7810
发布2022-03-02 20:15:40
举报
文章被收录于专栏:零域Blog

在python程序中,第一步就是获取参数,然后程序才能执行。对于简单的程序脚本,可以直接使用sys.argv[] 来获取命令行参数,但是应用到大的软件项目中,我们需要更加规范,更加方便而功能强大工具来处理命令行参数,本文主要介绍python标准库argparse的简单使用,详细方法及示例请参考python标准库

python获取命令行参数

获取参数 sys.argv

sys.argv[0] 为程序名称,其后分别为参数,len(sys.argv)可得出所有参数个数 python标准库中getopt, optparse, argparse都是专门处理命令行参数的模块 getopt 是类似UNIX系统getopt这个C函数的实现,可以处理长短配置项和参数。缺点有两个,一是长短配置项需要分开处理,二是对非法参数和必填参数的处理需要手动 optparse 比getopt 更加方便,强劲,采用声明式风格,还可以自动生成帮助信息 argparse 继承了optparse 的声明式风格的优点,又多了更丰富的功能,所以是现阶段最好用的参数处理标准库 docopt 是比前者更先进更易用的命令行参数处理器,甚至不用写代码,只要编写类似argparse 输出的帮助信息即可,因为其还不是标准库,所以现在主要学习argparse

argparse

argparse 解析命令行选项,参数以及子命令 argparse 可以帮助更方便的写出用户友好的命令行接口。程序定义它需要什么参数,argparse 解决如何解析这些来自sys.argv 的参数 argparse 同样自动生成帮助和使用说明信息并且当使用者给出错误参数时分发错误

代码语言:javascript
复制
#引入模块
import argparse

#构建ArgumentParser对象,用来保存解析命令行所得的信息
parser = argparse.ArgumentParser(description='Process some intergers.')

#调用add_argument() 告诉ArgumentParser对象如何处理命令行参数
parser.add_argument('intergers', metavar='N', type=int, nargs='+', help='an interger for the accumulator')

#调用parse_args() 来解析参数
args = parser.parse_args()

ArgumentParser

参数简介: description 给出一个简短的描述关于程序的使用说明,它出现在usage和帮助信息中间 epilog 在最后给出一个文件描述 add_help 是否加入-h –help选项,默认为True prefix_chars 命令行选项的前缀,默认为’-‘ fromfile_prefix_chars 从文件中获取参数信息 argument_default 设置参数的全局默认值 parents 包含进其他ArgumentParser对象的参数设置 conflict_handler 定义解决冲突选项的策略 formatter_class 自定义帮助输出的类,控制输出的格式 prog 程序的名字,默认为sys.argv[0] usage 描述程序使用说明

add_argument()

参数简介: name or flags 选项名字,可选参数以’-‘开始 action 遇到此名字的选项的动作 store 存储参数的值,默认即为此 store_const 存储为常量值 store_true(false) 存储布尔值 append 存入List append_const 存入List,且其值为常量 version 版本信息 nargs 参数的不同数量 N 整数,参数的个数 ? 匹配单个值

  • 多个值,放入list
  • 类似* ,但是至少要有一个值,否则报错 (这三个用处有点像正则。。) const 常量值 default 默认值 type 命令行参数应被转换的类型 int float complex file 可调用对象,包括函数等 choices 参数容许的值的容器,如果输入的参数不在此容器之内,报错 required 此选项是否必须,如果未输入,会报错提示。因为是可选参数,而又必须提供参数,自相矛盾,应避免使用 help 对此参数的简短描述 metavar 此参数在usage信息中的名字,实际名字未变,仍为dest 所定义 dest 经过parse_args() 解析后返回的名字,如不指定名字,则使用– 或者- 之后的名字

parse_args()

默认参数来自sys.argv 返回一个包含解析后的参数的namespace

其他功能

子命令 即命令之下包含又一层命令 如:git add git checkout git push等 fileType对象 argument groups 参数分组 mutual exclusion parser defaults partial parsing parse_known_args()返回一个包含两个元素的元组,第一个是包含可选参数的namespace, 第二个是包含剩下的参数的list

代码示例

代码语言:javascript
复制
### prog.py

import argparse

parser = argparse.ArgumentParser(description='An example about argparse')
parser.add_argument("-n", "--name", action="store", dest="name", default="hero", help="Get your name. [%(default)s]")
parser.add_argument("-a", "--age", action="store", dest="age", default="18", type=int, help="Get your age. [%(default)s]")

(para, args) = parser.parse_known_args()

print 'Hello, %s! You are %d years old. Welcome to my world!' % (para.name, para.age)

if len(args) != 0:
    print 'Other parameters are ' + ' '.join(args)

参考文献

python library reference 编写高质量代码:改善Python程序的91个建议

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python获取命令行参数
    • 获取参数 sys.argv
    • argparse
      • ArgumentParser
        • add_argument()
          • parse_args()
            • 其他功能
            • 代码示例
            • 参考文献
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档