广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python argparse模块传参用法实例
  • 790
分享到

python argparse模块传参用法实例

2024-04-02 19:04:59 790人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录前言传入一个参数操作args字典传入多个参数改变数据类型位置参数可选参数默认值必需参数前言 argsparse是python的命令行解析的标准模块,内置于Python,不需要安装

前言

argsparse是python的命令行解析的标准模块,内置于Python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行。

港真的,今天是我第一次学习argsparse。因为用不到,自然也就没有学习的动力。但是现在电脑有点卡,每次打开PyCharm太卡了,逼得我不得不开始使用命令行来测试代码。

传入一个参数

我们先在桌面新建“arg学习”的文件夹,在该文件夹中新建demo.py文件,来看一个最简单的argsparse库的使用的例子。

import argparse
parser = argparse.ArgumentParser(description='命令行中传入一个数字')
#type是要传入的参数的数据类型  help是该参数的提示信息
parser.add_argument('integers', type=str, help='传入的数字')
args = parser.parse_args()
#获得传入的参数
print(args)

在这个代码中,我们在命令行传入一个数字。使用方法是打开命令行,先将工作目录cd到arg学习

cd desktop/arg学习

然后再命令行中输入python demo.py -h或者python demo.py --help, 这里我输入的是

python demo.py -h

在命令行中看到demo.py的运行结果如下

usage: demo.py [-h] integers
命令行中传入数字
positional arguments:
  integers    传入的数字
optional arguments:
  -h, --help  show this help message and exit

现在我们在命令行中给demo.py 传入一个参数5,

python demo.py 5

运行,得到的运行结果是

Namespace(integers='5')

操作args字典

其实得到的这个结果Namespace(integers='5')是一种类似于python字典的数据类型。

我们可以使用 arg.参数名来提取这个参数

import argparse
parser = argparse.ArgumentParser(description='命令行中传入一个数字')
#type是要传入的参数的数据类型  help是该参数的提示信息
parser.add_argument('integers', type=str, help='传入的数字')
args = parser.parse_args()
#获得integers参数
print(args.integers)

在命令行中运行 python demo.py 5 , 运行结果为

5

传入多个参数

现在在命令行中给demo.py 传入多个参数,例如传入1,2,3,4四个数字

python demo.py 1 2 3 4

运行报错

usage: demo.py [-h] integers 
demo.py: error: unrecognized arguments: 2 3 4

不能识别2 3 4,看源代码我们知道integers这个参数是位置参数,说明第一个数1是能识别。这里我们需要重新更改demo.py代码

import argparse
parser = argparse.ArgumentParser(description='命令行中传入一个数字')
parser.add_argument('integers', type=str, nargs='+',help='传入的数字')
args = parser.parse_args()
print(args.integers)

nargs是用来说明传入的参数个数,'+' 表示传入至少一个参数。这时候再重新在命令行中运行python demo.py 1 2 3 4得到

['1', '2', '3', '4']

改变数据类型

add_argument中有type参数可以设置传入参数的数据类型。我们看到代码中有type这个关键词,该关键词可以传入list, str, tuple, set, dict等。例如我们把上面的type=str,改成type=int,这时候我们就可以进行四则运算。

import argparse
parser = argparse.ArgumentParser(description='命令行中传入一个数字')
parser.add_argument('integers', type=int, nargs='+',help='传入的数字')
args = parser.parse_args()
#对传入的数据进行加总
print(sum(args.integers)

在命令行中输入 python demo.py 1 2 3 4, 运行结果为

10

位置参数

在命令行中传入参数时候,传入的参数的先后顺序不同,运行结果往往会不同,这是因为采用了位置参数,例如

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('param1', type=str,help='姓')
parser.add_argument('param2', type=str,help='名')
args = parser.parse_args()
#打印姓名
print(args.param1+args.param2)

在命令行中分别输入python demo.py 张 三和python demo.py 三 张,得到的 运行结果分别为

张三

三张

如果我们将代码

parser.add_argument('param1', type=str,help='姓')

parser.add_argument('param2', type=str,help='名')互

换位置,即第4行和第五行代码,再重新运行

python demo.py 张 三 和 python demo.py 三 张,得到的 运行结果分别为

三张

张三

可选参数

为了在命令行中避免上述位置参数的bug(容易忘了顺序),可以使用可选参数,这个有点像关键词传参,但是需要在关键词前面加--,例如

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str,help='姓')
parser.add_argument('--name', type=str,help='名')
args = parser.parse_args()
#打印姓名
print(args.family+args.name)

在命令行中输入

python demo.py --family=张 --name=三

运行结果

张三

可选参数虽然写法比较繁琐,但是增加了命令行中的可读性,不容易因为参数传入顺序导致数据错乱。

默认值

add_argument中有一个default参数。有的时候需要对某个参数设置默认值,即如果命令行中没有传入该参数的值,程序使用默认值。如果命令行传入该参数,则程序使用传入的值。具体请看下面的例子

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str, default='张',help='姓')
parser.add_argument('--name', type=str, default='三', help='名')
args = parser.parse_args()
#打印姓名
print(args.family+args.name)

在命令行中分别输入 python demo.py 、 python demo.py --family=李

运行结果分别为

张三

李三

必需参数

add_argument有一个required参数可以设置该参数是否必需。

import argparse
parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str, help='姓')
parser.add_argument('--name', type=str, required=True, default='', help='名')
args = parser.parse_args()
#打印姓名
print(args.family+args.name)

在命令行中输入 python demo.py --family=张,运行结果

usage: demo.py [-h] [--family FAMILY] --name NAME
demo.py: error: the following arguments are required: --name

因为可选参数name的required=True,所以必须要传入。如果我们将其更改为False,程序运行结果

以上就是python argparse模块传参用法实例详解的详细内容,更多关于python argparse模块传参的资料请关注编程网其它相关文章!

--结束END--

本文标题: python argparse模块传参用法实例

本文链接: https://www.lsjlt.com/news/118487.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python argparse模块传参用法实例
    目录前言传入一个参数操作args字典传入多个参数改变数据类型位置参数可选参数默认值必需参数前言 argsparse是python的命令行解析的标准模块,内置于python,不需要安装...
    99+
    2022-11-11
  • python argparse模块传参怎么使用
    这篇文章主要讲解了“python argparse模块传参怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python argparse模块传参怎么使用”吧!传入一...
    99+
    2023-06-30
  • Python脚本传参数argparse模块的使用
    先上代码举例说明: import argparse   parser = argparse.ArgumentParser()   parser.add_argument("-t", ...
    99+
    2022-11-13
  • python 模块argparse用法实
     argparse是python内置模块,用于快速创建命令行。有一个第三方模块Click也可以实现这个功能,两者各有优缺点,看个人需求吧。官方网页https://docs.python.org/3.5/library/argparse.ht...
    99+
    2023-01-31
    模块 python argparse
  • Python argparse参数模块之命令行参数实例分析
    这篇文章主要介绍“Python argparse参数模块之命令行参数实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python argparse参数模块之命令行参数实例分析”文章能帮助大家解...
    99+
    2023-07-02
  • python 命令行参数模块argparse的实现
    Python中的argparse模块是一个命令行参数解析器,它可以让开发者轻松地编写用户友好的命令行界面。argparse模块可以自动从命令行中解析出参数,将它们转化为Python中...
    99+
    2023-03-14
    python 命令行参数argparse python argparse
  • python命令行参数argparse模块基本用法详解
    目录一、传入一个参数二、传入多个参数三、改变数据类型四、可选参数(关键字参数)五、参数默认值六、参数解析补充:python中的argparse基本用法argparse 是p...
    99+
    2023-01-30
    python命令行参数 python命令行参数argparse argparse模块基本用法
  • Python包argparse模块常用方法
    目录argparse介绍argparse实例argparse介绍   argparse包用于解释命令行参数。这里给出几个常用的方法。 # 创建解析器对象 # @para: descript...
    99+
    2022-06-02
    Python包argparse使用 Python argparse使用
  • python命令行参数模块argparse怎么使用
    今天小编给大家分享一下python命令行参数模块argparse怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Pyt...
    99+
    2023-07-05
  • Python中命令行参数argparse模块的使用
    目录传入一个参数位置参数可选参数默认参数必需参数argparse 模块是Python内置的用于命令项选项与参数解析的模块,可以轻松编写友好的命令行接口,能够帮助程序员为模型定义参数。...
    99+
    2023-02-01
    Python argparse模块 Python argparse命令行参数
  • Python包argparse模块常用方法有哪些
    这篇文章给大家分享的是有关Python包argparse模块常用方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。argparse介绍  argparse包用于解释命令行参数。这里给出几个常用的方法。#&n...
    99+
    2023-06-15
  • python参数+关键字参数+inspect模块实例分析
    这篇文章主要讲解了“python参数+关键字参数+inspect模块实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python参数+关键字参数+inspect模块实例分析”吧!函数内...
    99+
    2023-06-30
  • Python中os模块的实例用法
    1、说明 os.path.exists():用于判断某个路径(文件或文件夹)是否存在,若存在则返回True,若不存在则返回False。 os.makedirs():用于创建文件夹。传入所欲创建的文件夹的路径即可,没有...
    99+
    2022-06-02
    Python os模块
  • Python 操作Excel-openpyxl模块用法实例
    目录openpyxl 的用法实例1.1 Openpyxl 库的安装使用1.2 Excel 的新建、读取、保存1.2.1 新建保存工作簿(覆盖创建)1.2.2 读取保存工作簿1.2.3...
    99+
    2023-05-19
    Python Excel-openpyxl模块使用 Excel-openpyxl用法
  • 在python中实现导入一个需要传参的模块
    最近跑实验,遇到了一个问题: 由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验。我个人无法忍...
    99+
    2022-06-02
    python 导入模块 导入传参模块
  • Python中time模块和datetime模块的用法示例
    time模块方法: time.time():获取当前时间的时间戳 time.localtime():接受一个时间戳,并把它转化为一个当前时间的元组。不给参数的话就会默认将time.time()作为参数传入 ...
    99+
    2022-06-04
    模块 示例 Python
  • python copy模块中的函数实例用法
    1、copy.copy()函数可用于复制列表或字典等可变值,复制后的列表和原列表是两个独立的列表。 import copy origin = [1,2,3] new = copy...
    99+
    2022-11-12
  • python中hashlib模块用法示例
    我们以前介绍过一篇Python加密的文章:Python 加密的实例详解。今天我们看看python中hashlib模块用法示例,具体如下。 hashlib hashlib主要提供字符加密功能,将md5和sh...
    99+
    2022-06-04
    示例 模块 python
  • python开发中module模块用法实例分析
    本文实例讲述了python开发中module模块用法。分享给大家供大家参考,具体如下: 在python中,我们可以把一些功能模块化,就有一点类似于java中,把一些功能相关或者相同的代码放到一起,这样我们需...
    99+
    2022-06-04
    实例 模块 python
  • python email模块的使用实例
    在使用python过程中,需要用的email模块来进行邮件的发送和接收,包含自定义邮件的中文、主题、日期、附件等信息,以下是我使用email模块来发送一个测试报告相关信息的邮件的例子: #!/usr/bin/python # -*- co...
    99+
    2023-01-31
    实例 模块 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作