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

python argparse 参数使用详解记录

1.argparse是什么,有什么用?

  argparse 是 Python 标准库中用于解析命令行参数和选项的模块,可以轻松地编写用户友好的命令行,进行参数解析。我理解经常作为程序sh脚本,或者接口参数缓存的入口。

 2.基本步骤

  • 创建解析器 argparse.ArgumentParser() 创建一个解析器对象

         定义程序可以接受的命令行参数,并设置参数的名称、类型、默认值和帮助信息

  • 添加参数: add_argument() 向解析器中添加参数

        如参数名称、缩写、类型、默认值、帮助信息

  • 解析参数: parse_args() 解析命令行参数,包含了解析后的参数及其对应的值

ArgumentParser ()函数参数说明:

-------------------------------------------------------------------------------------------------------------------
# 函数功能:创建一个命令行参数解析器对象。
argparse.ArgumentParser([

        prog=None, usage=None, description=None, epilog=None,

formatter_class=argparse.HelpFormatter,  prefix_chars='-',  fromfile_prefix_chars=None, argument_default=None,  conflict_handler='error',  add_help=True,  allow_abbrev=True

])


# 参数说明: 

- prog:                            程序的名称

- usage:                         用法说明
- description:                  描述参数作用的文字
- epilog:                          描述参数作用的结尾文字

- formatter_class:           自定义帮助信息输出格式
- prefix_chars:                用于标识可选参数的前缀字符
- fromfile_prefix_chars:  用于从文件中读取参数的前缀字符
- argument_default:        参数的默认值
- conflict_handler:          解决参数冲突的方式
- add_help:                    是否自动添加'-h'和'--help'选项来显示帮助信息
 - allow_abbrev:             是否允许参数缩写

import argparse

# 创建一个解析器对象,description 参数用于提供程序的简要描述
parser = argparse.ArgumentParser(description='这是一个argparse 示例,我是描述信息')

# 添加参数,位置参数 name 和 age,help 参数用于提供参数的帮助信息,type 参数指定了参数的类型
parser.add_argument('name', help='你的姓名')
parser.add_argument('age', type=int, help='你的年龄')

# 解析命令行参数,将结果存储在 args 对象中
args = parser.parse_args()

# 打印参数
print(f"你好,{args.name},你今年 {args.age} 岁了。")

3.可选参数:

add_argument() 函数参数说明

----------------------------------------------------------------------------------------------------------------------

函数功能:向命令行参数解析器中添加命令行参数。
parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])


# 参数说明:
 - name or flags:    命令行参数的名称或标志,可以是一个字符串或一个包含多个字符串的列表。例如 foo 或 -f, --foo。
                (1)位置参数: 直接输入一个字符串,代表位置参数,是必传值。
                (2)命令标志: 在字符串前加一个短横线(-),在命令中表示该参数。
                (3)可选参数: 在字符串前加两个短横线(--),在命令行中代表可选参数,可输入也可不输入。

- action:     指定命令行参数的动作,默认为'store'。将命令行参数值存储到相应的参数名中。
                (1)'store':存储参数值。
                (2)'store_const':存储常量值。
                (3)'store_true':存储True值。
                (4)'store_false':存储False值。
                (5)'append':将参数值添加到列表中。
                (6)'append_const':将常量值添加到列表中。
                (7)'count':计算参数出现的次数,存储到参数名中。
                (8)'help':显示帮助信息并退出。

  - nargs:            命令行参数的数量,默认为None。
  - const:            常量值,用于一些特殊的动作,默认为None。
   - default:          命令行参数的默认值,默认为None。
   - type:             命令行参数的数据类型,默认为None。
              (1)int:整数。
              (2)float:浮点数。
              (3)str:字符串。
              (4)bool:布尔值。
   - choices:          命令行参数允许的值的列表,默认为None。
   - required:         命令行参数是否为必选,默认为False。
   - help:             命令行参数的帮助文本,默认为None。
   - metavar:          命令行参数在帮助文本中的名称,默认为None。
   - dest:             命令行参数存储在解析结果中的属性名称,默认为None。
                (1)默认情况下,参数名称与属性名称相同。
                (2)若指定dest,则使用dest指定的参数名称作为属性名称。

--verbose 和 -v 是可选参数,action='store_true' 表示如果该参数在命令行中出现,则将其对应的属性设置为 True,否则为 False

import argparse

# 创建一个解析器对象,description 参数用于提供程序的简要描述
parser = argparse.ArgumentParser(description='这是一个argparse 示例,我是描述信息')

# 添加可选参数
parser.add_argument('--verbose', '-v', action='store_true', help='启用详细输出')

# 解析命令行参数,将结果存储在 args 对象中
args = parser.parse_args()

# 使用参数
if args.verbose:
    print("详细输出已启用。")
else:
    print("详细输出未启用。")

4.默认值和选择

choices 参数指定了参数的可选值,default 参数指定了参数的默认值

import argparse

# 创建解析器
parser = argparse.ArgumentParser(description='这是一个包含默认值和选择的示例')

# 添加参数,设置默认值和选择
parser.add_argument('--color', choices=['red', 'green', 'blue'], default='red', help='选择颜色')

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

# 使用参数
print(f"你选择的颜色是 {args.color}。")

5运行py命令:

python3 test_parase.py --name "丽丽" --age 18

相关文章:

  • Qt 制作验证码
  • SQL语句---特殊查询
  • 递归,搜索,回溯算法(一)
  • 多版本PHP开发环境配置教程:WAMPServer下MySQL/Apache/MariaDB版本安装与切换
  • ubuntu下docker 安装 graylog 6.1
  • HTML输出流
  • WebMvcConfigurer 的 addResourceLocations
  • Eplan许可管理的自动化工具
  • [Vue2]指令修饰符(一)
  • [问题收集]mysql主从分离过程中,数据不同步可能导致的后果以及应对策略
  • NFC 智能门锁全栈解决方案:移动端、服务器、Web 管理平台
  • src案例分享-逻辑漏洞
  • 软路由用联想j3710主板踩坑
  • 从0到1,解锁Ant Design X的无限可能
  • 能源革命新突破:虚拟电厂赋能微电网智能调控,构建低碳生态新格局
  • MCP插件使用(browser-tools-mcp为例)
  • 通过一个led点灯的demo来熟悉openharmony驱动编写的过程(附带hdf详细调用过程)
  • 【windows搭建lvgl模拟环境之VSCode】
  • Vue3项目中的.vscode文件夹
  • kettle插件-dm达梦数人大金仓Vastbase数据库插件
  • 巴基斯坦信德省卡拉奇发生爆炸
  • 中方对中美就关税谈判的立场发生变化?外交部:中方立场没有任何改变
  • 央行行长:未来还可以扩大结构性货币政策工具规模或创设新的政策工具
  • 应对美政策调整:中国重在开放与创新,维护好数据主权
  • 澳大利亚工党可以靠“回避”胜选,但继续执政需要更多勇气
  • 中俄合拍电影《红丝绸》将于今年9月在中国上映