Python 命令行解析工具 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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python中argparse模块用法实例详解

    本文实例讲述了python中argparse模块用法.分享给大家供大家参考.具体分析如下: 平常在写命令行工具的时候,经常会带参数,所以用python中的argparse来实现. # -*- coding: utf-8 -*- import argparse args = "-f hello.txt -n 1 2 3 -x 100 -y b -z a -q hello @args.txt i_am_bar -h".split() # 使用@args.txt要求fromfile_pref

  • python argparse 模块命令行参数用法及说明

    目录 先上代码 下面针对一些特殊点再作详述 程序用法帮助 argparse 是 python 的一个命令行解析包,可根据需要编写高可读性的程序. 网上的许多教程较为冗长和散漫,没有达到精练好掌握的目的,本文针对项目中对 argparse 的用法,用实例对各个参数进行讲解,力求达到让读者秒懂的目的. 先上代码 import argparse if __name__ == '__main__': # 创建命令行解析器句柄,并自定义描述信息 parser = argparse.ArgumentPars

  • python argparse模块传参用法实例

    目录 前言 传入一个参数 操作args字典 传入多个参数 改变数据类型 位置参数 可选参数 默认值 必需参数 前言 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行. 港真的,今天是我第一次学习argsparse.因为用不到,自然也就没有学习的动力.但是现在电脑有点卡,每次打开pycharm太卡了,逼得我不得不开始使用命令行来测试代码. 传入一个参数 我们先在桌面新建“arg学习”的文件夹,在

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

    在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse.这里面功能最强大的莫过于 argparse,下面就来看看它用法. import argparse # 使用 argparse 分为以下几步 # 1. 创建命令行解析器对象 parse = argparse.ArgumentParser( description="这是命令行解析器" ) # 2.给解析器添加命令行参

  • 详解Python命令行解析工具Argparse

    最近在研究pathon的命令行解析工具,argparse,它是Python标准库中推荐使用的编写命令行程序的工具. 以前老是做UI程序,今天试了下命令行程序,感觉相当好,不用再花大把时间去研究界面问题,尤其是vc++中尤其繁琐. 现在用python来实现命令行,核心计算模块可以用c自己写扩展库,效果挺好. 学习了argparse,在官方文档中找到一篇toturial,简单翻译了下. http://docs.python.org/2/howto/argparse.html#id1 Argparse

  • Python命令行解析器argparse详解

    目录 第1章 argparse简介 1.1 解析 1.2 argparse定义三步骤 1.3  代码示例 第2章 参数详解 2.1 创建一个命令行解析器对象:ArgumentParser() 2.2 为命令行添加参数: add_argument() 方法 2.3 解析命令行的参数:parse_args() 2.4 命令行参数的输入 2.5 命令行参数的使用 总结 第1章 argparse简介 1.1 解析 argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,argp

  • Python命令行解析模块详解

    本文研究的主要是Python命令行解析模块的相关内容,具体如下. Python命令行常见的解析器有两种,一是getopt模块,二是argparse模块.下面就解读下这两种解析器. getopt模块 这个模块可以帮助脚本解析命令行参数,一般是sys.argv[1:].它遵循着Unix的getopt()函数相同的约定(用-/--指定命令参数).这个模块提供两个函数(getopt.getopt()/getopt.gnu_getopt())和一个参数异常(getopt.GetoptError). 这里重

  • python命令行解析之parse_known_args()函数和parse_args()使用区别介绍

    在python中,命令行解析的很好用, 首先导入命令行解析模块 import argparse import sys 然后创建对象 parse=argparse.ArgumentParser() 然后增加命令行 parse.add_argument("--learning_rate",type=float,default=0.01,help="initial learining rate") parse.add_argument("--max_steps&

  • IPython 8.0 Python 命令行交互工具

    目录 1.追溯改进 2.自动建议 3.使用“?”和"??"查看对象信息 4.历史范围全局功能 前言: IPython 是 Python 的原生交互式 shell 的增强版,可以完成许多不同寻常的任务,比如帮助实现并行化计算:主要使用它提供的交互性帮助,比如代码着色.改进了的命令行回调.制表符完成.宏功能以及改进了的交互式帮助. IPython 8.0 酝酿了许久,主要对现有代码库和几个新功能进行了改进.新功能包括在 CLI 中使用 Black 重新格式化代码.ghost 建议以及突出错

  • IPython 8.0 Python 命令行交互工具

    目录 1.追溯改进 2.自动建议 3.使用“?”和"??"查看对象信息 4.历史范围全局功能 前言: IPython 是 Python 的原生交互式 shell 的增强版,可以完成许多不同寻常的任务,比如帮助实现并行化计算:主要使用它提供的交互性帮助,比如代码着色.改进了的命令行回调.制表符完成.宏功能以及改进了的交互式帮助. IPython 8.0 酝酿了许久,主要对现有代码库和几个新功能进行了改进.新功能包括在 CLI 中使用 Black 重新格式化代码.ghost 建议以及突出错

  • python命令行工具Click快速掌握

    前言 写 Python 的经常要写一些命令行工具,虽然标准库提供有命令行解析工具 Argparse,但是写起来非常麻烦,我很少会使用它.命令行工具中用起来最爽的就是 Click,它是 Flask 的团队 pallets 的开源项目.Click 只要很少的代码就可以优雅地创造一个命令行工具,它致力于将创建命令行工具的过程变的快速而有趣. 百闻不如一试 安装 pip install Click 使用 创建 click_demo.py ,写一个最简单的函数 import click @click.co

  • Python中最好用的命令行参数解析工具(argparse)

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解析的模块来帮你做这个苦力活. Python 本身就提供了三个命令行参数解析模块,我这里罗列一下它们的大致情况供你了解. getopt,只能简单的处理命令行参数 optparse,功能强大,易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. argparse,使其更加容易的编

  • Python命令行click参数用法解析

    这篇文章主要介绍了Python命令行click参数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.前言 在概念上, click 把命令行分为 3 个组成:参数.选项和命令. 参数 就是跟在命令后的除选项外的内容,比如 git add a.txt 中的 a.txt 就是表示文件路径的参数 选项 就是以 - 或 -- 开头的参数,比如 -f.--file 命令 就是命令行的初衷了,比如 git 就是命令,而 git add 中的 add

随机推荐