当前位置: 首页 > news >正文

Python脚本参数总结:argparse库基础用法

import argparse

1 参数的基本类型

  • 在命令行运行 Python 文件时,可以向文件传递不同类型的参数。主要有以下几种类型的参数:
  • 位置参数(Positional arguments):位置参数是指在命令行中按照特定顺序传递给程序的参数,它们不带任何前缀。例如,在命令行中运行 python script.py arg1 arg2,arg1 和 arg2 就是位置参数。
  • 选项参数(Optional arguments):选项参数是可选的参数,它们通常以短横线(-)或双短横线(–)开头。选项参数可以有一个或多个值。例如,-h 或 --help 是常见的用于显示帮助信息的选项参数。
  • 标志参数(Flag arguments):标志参数是一种特殊的选项参数,它们不带值,只用于表示某个状态或开关是否打开。通常以短横线和单个字符表示,例如 -v 表示 verbose 模式。
  • 环境变量参数(Environment variable arguments):有时候,程序可能会从环境变量中读取参数值。这种方式不需要在命令行中显式传递参数,而是通过预先设置的环境变量来传递参数信息。

2 用法

2.1 创建参数总容器:

parser = argparse.ArgumentParser()

用ArgumentParser类实例化即可创建一个总的容器类parser,之后我们添加参数就是往这个parser里面添加。

2.2 添加参数

parser.add_argument('num1', type=int, help='The first number')
parser.add_argument('num2', type=int, help='The second number')

调用add_argument函数做参数的添加
add_argument 方法是 argparse.ArgumentParser 类的一个方法,用于向解析器添加一个新的参数。add_argument 方法有很多参数。

2.3.1 name 添加参数名称

  • name or flags:参数的名称或者选项标志,可以是一个字符串(位置参数)或者一个列表(选项参数)。例如,‘–output’ 表示一个长选项,‘-o’, ‘–output’ 表示一个短选项和一个长选项。

2.3.2 type 解析类型

  • type:参数的类型,用于指定参数的值应该被解析成什么类型。例如,int 表示整数,float 表示浮点数,默认的话是字符型,这时候如果我们期望做数值运算,肯定得转换为整形或浮点型。

2.3.3 参数默认值

  • default:参数的默认值,如果用户没有提供该参数,则使用默认值。默认值可以是任何合法的 Python 值。

2.3.4 参数是否必须设置

  • required:指定参数是否是必需的,默认为 False。如果设置为 True,则用户必须提供该参数,否则会显示错误信息。

2.3.5 参数提示信息

  • help:参数的帮助信息,用于描述参数的作用和用法。当用户使用 -h 或 --help 选项时,会显示帮助信息。

2.3.6 参数动作

  • action:参数的动作,指定参数应该如何处理。常用的值包括 store(存储参数值)、store_true(如果存在该参数则存储 True,否则存储 False)、store_false(如果存在该参数则存储 False,否则存储 True)等。

action 参数用于指定参数在解析时应该如何处理。它定义了当参数在命令行中出现时应该采取的动作。下面是一些常见的 action 参数值及其含义:

  • store:默认行为,将参数的值存储起来。如果不指定 action,则默认为 store。
  • store_const:将一个常量值存储到参数中。通常与 const 参数一起使用。
    例如:
parser.add_argument('--verbose', action='store_const', const=True)

这会将 --verbose 参数的值设置为 True。

  • store_true:将参数的值设置为 True。通常用于标记某个选项是否存在。
    例如:
parser.add_argument('--verbose', action='store_true')

如果用户在命令行中使用了 --verbose,则参数的值为 True,否则为 False。

  • store_false:将参数的值设置为 False。与 store_true 类似,用于标记某个选项是否不存在。
  • append:将参数值追加到列表中。通常与 nargs=‘+’ 一起使用,表示参数可以接受多个值,这些值将被追加到一个列表中。
  • ​append_const:将一个常量值追加到列表中。通常与 const 参数一起使用。
  • ​count:统计参数出现的次数。用于统计某个选项在命令行中出现的次数。
  • help:显示帮助信息并退出。

2.3.7 参数可选值列表

  • choices:参数的可选值列表,用户只能从列表中选择一个值作为参数的值。如果用户提供的值不在列表中,则会显示错误信息。
    通过使用 add_argument 方法,可以灵活地定义各种不同类型的参数,并在命令行中解析这些参数,从而实现更加复杂的命令行界面。

2.3.8 参数个数

  • nargs 参数用于指定一个参数应该接受的命令行参数数量。它可以取以下几种值:
    • N:表示参数应该接受 N 个命令行参数。
    • ?:表示参数可以接受零个或一个命令行参数。如果没有提供命令行参数,则该参数的值为 None。
    • *:表示参数可以接受零个或多个命令行参数。命令行参数会被收集到一个列表中。
    • +:表示参数可以接受一个或多个命令行参数。命令行参数会被收集到一个列表中。

例如,对于一个参数定义如下:

parser.add_argument('--inputs', nargs='+')

这表示 --inputs 参数可以接受一个或多个命令行参数,这些参数会被收集到一个列表中。

parser.add_argument('--output', nargs='?', const='default.txt')

这表示 --output 参数可以接受零个或一个命令行参数。如果用户没有提供命令行参数,则参数的值将为 ‘default.txt’。

2.4 解析命令行参数

args = parser.parse_args()
#解析命令行参数

3 完整代码

import argparse# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='Add two numbers')# 添加两个参数
parser.add_argument('num1', type=int, help='The first number')
parser.add_argument('num2', type=int, help='The second number')# 解析命令行参数
args = parser.parse_args()# 计算和并输出结果
sum = args.num1 + args.num2
print(f'The sum of {args.num1} and {args.num2} is {sum}')

运行
python test.py 5 3
运行结果:
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • docker容器使用aconda运行python程序
  • KVM是什么,如何给一台Linux系统使用KVM技术变成好几个不同配置的Linux系统?
  • 回首“八年级上册语文课本”-----原文+感慨
  • angular xlsx-style,复杂表头样式导出
  • Redis的内存淘汰策略-noeviction
  • [kylin M900]麒麟操作系统固件修改与合成
  • 超级会员卡积分收银系统源码,一站式解决方案,可以收银的小程序 带完整的安装代码包以及搭建部署教程
  • WAF和防火墙有什么区别
  • 基于jstack、jmap、jstat 进行JVM监控
  • 避坑之:深信服AC跨三层取MAC(核心交换机是锐捷S7808C_RGOS 11.0(4)B2P1)
  • Java Operator SDK
  • day01-项目概述、环境搭建
  • CMake构建学习笔记13-opencv库的构建
  • 如何克服编程学习中的挫折感?
  • Unity工具篇 专栏目录
  • 分享一款快速APP功能测试工具
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【node学习】协程
  • 2019年如何成为全栈工程师?
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java|序列化异常StreamCorruptedException的解决方法
  • java第三方包学习之lombok
  • JS学习笔记——闭包
  • magento2项目上线注意事项
  • node 版本过低
  • Protobuf3语言指南
  • python_bomb----数据类型总结
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • webpack+react项目初体验——记录我的webpack环境配置
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 从零搭建Koa2 Server
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 后端_ThinkPHP5
  • 基于webpack 的 vue 多页架构
  • 漂亮刷新控件-iOS
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 我与Jetbrains的这些年
  • 用Visual Studio开发以太坊智能合约
  • 优化 Vue 项目编译文件大小
  • 【干货分享】dos命令大全
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​ArcGIS Pro 如何批量删除字段
  • ​TypeScript都不会用,也敢说会前端?
  • ​业务双活的数据切换思路设计(下)
  • # 飞书APP集成平台-数字化落地
  • (1)svelte 教程:hello world
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (NSDate) 时间 (time )比较
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)为C# Windows服务添加安装程序