Python 命令行解析工具 argparse基本用法

 更新时间:2022年12月24日 11:34:05   作者:Python数据开发  
在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse,这里面功能最强大的莫过于 argparse,下面就来看看它用法,需要的朋友可以参考下

在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse。这里面功能最强大的莫过于 argparse,下面就来看看它用法。

import argparse  
  
# 使用 argparse 分为以下几步  
# 1. 创建命令行解析器对象  
parse = argparse.ArgumentParser(  
    description="这是命令行解析器"  
)  
  
# 2.给解析器添加命令行参数,可以添加任意个  
parse.add_argument("-n", dest="name")  
  
# 3. 从命令中将参数解析出来  
args = parse.parse_args()  
  
# 然后通过 args 便可以拿到相应的参数值  
print(args.name)

我们执行一下看看,当前文件叫做 tools.py。

技术提升

本文由技术群粉丝投稿分享,项目源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

怎么样,是不是很简单呢?所以我们的重点就在 add_argument 方法上面,来看看它都支持哪些参数。

import argparse  
  
parse = argparse.ArgumentParser()  
  
# 这里出现了 "-n" 和 "--name"  
# 在命令行中可以通过 '-n 古明地觉' 或者 '--name 古明地觉' 进行指定  
# 两者的含义是一样的,但 - 后面一般跟短参数,-- 后面跟长参数  
# 然后是 dest,它表示获取相关参数值时,使用的名称  
parse.add_argument("-n", "--name", dest="name")  
# 这里只有一个短参数,那么在命令行中需要通过 -a 来指定  
parse.add_argument("-a", dest="age")  
# 这里只有一个长参数,那么在命令行中需要通过 --gender 来指定  
parse.add_argument("--gender", dest="gender")  
  
args = parse.parse_args()  
  
print(f"name: {args.name}, age: {args.age}, gender: {args.gender}")

我们来试一下:

还是很简单的,一个 - 后面跟的是短参数,两个 - 后面跟的是长参数。在命令行中通过 - 或者 – 进行指定,解析完毕之后再通过 dest 参数指定的名字进行获取。

另外,虽然 - 后面跟短参数,-- 后面跟长参数,但我们这样写也是可以的。

parse.add_argument("-name", "--n", dest="name")

只不过这种写法比较怪异,应该写成 --name 和 -n,一个横杠后面是短参数,两个是长参数。

然后这些参数都是可以不指定的,会使用默认值 None。

如果我希望它是必传参数,该怎么办呢?

import argparse  
  
parse = argparse.ArgumentParser()  
  
parse.add_argument("--host", dest="host", required=True)  
parse.add_argument("-p", dest="port", default=6379)  
  
args = parse.parse_args()  
  
print(f"host: {args.host}, port: {args.port}")

我们看到当 host 不指定的时候,就会报错。并且我们还通过 default 参数指定了默认值。

然后是参数值的类型,不管什么参数,只要我们在命令行当中传递了,那么解析出来的默认都是字符串类型。

import argparse  
  
parse = argparse.ArgumentParser()  
  
parse.add_argument("-p", dest="port", default=6379)  
  
args = parse.parse_args()  
  
print(f"port 类型: {args.port.__class__}")

那么可不可以指定参数的类型呢?答案是可以的。

import argparse  
  
parse = argparse.ArgumentParser()  
parse.add_argument("-p", dest="port", type=int)  
args = parse.parse_args()  
  
print(f"port 类型: {args.port.__class__}")

通过指定 type 为 int,那么在将参数值解析出来之后就会调用 int 进行转化,转化失败则报错。

同理,我们也可以换成其它类型,举个例子。

还是很简单的,甚至换成我们自定义的类,或者一个函数也是可以的,

此时我们就实现了给一个参数传递多个值,不过这种做法属于是曲线救国,我们应该通过另一个参数实现。

nargs 指定为 *,那么表示 --hobby 可以接收多个值,并且值之间使用空格进行分隔,最终会得到一个列表。如果指定 --hobby,但是不传值,那么会得到空列表。

以上就是 argparse 的基本用法,更多内容可以参考官方文档。

到此这篇关于Python 命令行解析工具 argparse很好用的文章就介绍到这了,更多相关Python   argparse内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python tkinter控件样式详解

    Python tkinter控件样式详解

    tkinter对控件的诸多属性提供了可定制的功能,下面以最常用的按钮作为示例,集中展示其样式特点,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-09-09
  • Python3中列表list合并的四种方法

    Python3中列表list合并的四种方法

    这篇文章主要介绍了Python3中列表list合并的四种方法,文章结尾对每种方法做了总结,需要的朋友可以参考下
    2019-04-04
  • 利用pandas读取中文数据集的方法

    利用pandas读取中文数据集的方法

    今天小编就为大家分享一篇利用pandas读取中文数据集的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python-字典dict和集合set

    python-字典dict和集合set

    这篇文章主要介绍了python-字典dict和集合set,字典是python中的一种数据结构。集合(set)与字典相同均存储key,但只存储key,key不可重复,所以set中的值不可重复,而且是无序,下面来看看更多相关内容吧
    2021-12-12
  • Python常见库matplotlib学习笔记之画图中各个模块的含义及修改方法

    Python常见库matplotlib学习笔记之画图中各个模块的含义及修改方法

    matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图,下面这篇文章主要给大家介绍了关于Python常见库matplotlib学习笔记之画图中各个模块的含义及修改方法的相关资料,需要的朋友可以参考下
    2023-05-05
  • 解决python3 安装完Pycurl在import pycurl时报错的问题

    解决python3 安装完Pycurl在import pycurl时报错的问题

    今天小编就为大家分享一篇解决python3 安装完Pycurl在import pycurl时报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 利用python对mysql表做全局模糊搜索并分页实例

    利用python对mysql表做全局模糊搜索并分页实例

    这篇文章主要介绍了利用python对mysql表做全局模糊搜索并分页实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python操作CSV格式文件的方法大全

    Python操作CSV格式文件的方法大全

    CSV 文件(Comma Separated Values file,即逗号分隔值文件)是一种纯文本文件,它使用特定的结构来排列表格数据,这篇文章主要给大家介绍了关于Python操作CSV格式文件的相关资料,需要的朋友可以参考下
    2021-07-07
  • Python使用分布式锁的代码演示示例

    Python使用分布式锁的代码演示示例

    这篇文章主要介绍了Python使用分布式锁的代码演示,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python 3.6 +pyMysql 操作mysql数据库(实例讲解)

    python 3.6 +pyMysql 操作mysql数据库(实例讲解)

    下面小编就为大家分享一篇python 3.6 +pyMysql 操作mysql数据库的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论