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

argparse模块_Day230:argparse模块的位置参数和可选参数

argparse是python标准库中提供的用来解析命令行参数的模块,非常强大!在深入学习argparse模块之前,需要先搞清楚命令行位置参数和可选参数的概念。

位置参数

基于位置的参数,参数的出现不需要前缀(以 - 或 -- 开头的),而且是必须配置的参数。定义argparse模块的位置参数,参数名称不要有前缀(- 或 --),argparse模块使用这个前缀来判断是位置参数,还是可选参数。

import argparseparser = argparse.ArgumentParser()parser.add_argument('echo')args = parser.parse_args()print(args.echo)

这个代码定义了一个位置参数echo,由于是必须出现的位置参数,程序后面在打印echo参数的值的时候,不需要判断是否配置了这个参数。因为如果没有配置,parser.parse_args()这个函数就会报错。

ad4b122dd30d48dab242bf2e2b9f7a82

如果参数中有空格,参数需要使用引号括起来。

位置参数在命令行中的出现和配置顺序,与代码中参数的定义顺序是对应的。如果定义了多个位置参数,命令行输入参数的时候,顺序要与多个参数的定位顺序保持一致

位置参数在命令使用时,直接输入参数。

可选(必选)参数

凡是用 - 或者 -- 开头定义的命令行参数,都属于可选参数。

import argparseparser = argparse.ArgumentParser()parser.add_argument('-s','--sn')args = parser.parse_args()if args.sn: print(args.sn)else: print('no argument')

这里有一个约定俗成的惯例:单个字母只是用一个 - ,多个字母使用两个 - (--)。python也支持一个 - 后面跟多个字母,不过看起来有关怪异。上面的定义 -s 显然是 --sn 的简写。(Linux命令行参数风格)

我们也可以只定义 -s 简写,或者只定义 --sn 这种,代码直接去掉一个参数即可。在两者都有的情况下,后面的代码引用参数的值,需要使用 -- 后面的那个词。

7af5de34acb6435faa1c27d1feb96e51

其实,可选参数也可以变成必选参数!必选参数跟位置参数还不一样,必选参数的位置可以比较灵活。

import argparseparser = argparse.ArgumentParser()parser.add_argument('-s', required=True)parser.add_argument('-e','--echo')args = parser.parse_args()if args.s: print(args.s)if args.echo: print(args.echo)

这段代码 -s 参数是必须参数,但是它出现的位置是灵活的。

8b092eac96e14b1aba73e9d72c3236d4

-e 和 -s 出现的位置可以调换,而且 -s 必须要有。

由可选参数变化而来的必选参数,有的时候比位置固定的参数更好用。就是因为它必须出现,而且位置灵活。位置参数的位置是固定的。argparse模块功能非常强大,几乎你需要的关于命令行参数解析的功能,它都能提供。本文只是蜻蜓点水,仅仅介绍两个基本概念。

本文链接:https://www.pynote.net/archives/1562

相关文章:

  • python格式化输出_python格式化输出的三种方式
  • 线性规划算法源码_老马识途之线性规划
  • pythonfor循环例句_Python for 循环
  • 重建索引一般需要多久_相亲认识,直至确定恋爱关系,一般需要多久?
  • bmp图片中得到编码字符串_灰度处理之图片转字符串
  • 如何用python制作app_用kivy或者python制作app
  • python在不同的软件里都能识别吗_技术教程:2个Python程序识别图片和pdf上的文字!...
  • du -sh 如何找到最大的文件夹_Linux上查找最大文件的 3 种方法
  • python **参数为什么放在最后面_求大神帮忙看一下,在运行时为啥只保留了最后一张图片...
  • cdn jquery怎么没有提示_jQuery终端模拟器——基于web的终端
  • printf 指针地址_C语言零基础入门-指针-03
  • python有颜色进度条库_wxPython实现带颜色的进度条
  • python字典的一些操作_python 字典的一些操作
  • git 如何重新登录github_GitHub多账号管理
  • 解决python脚本连接终止问题_paramiko:自动终止远程启动的进程
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 345-反转字符串中的元音字母
  • android图片蒙层
  • Android优雅地处理按钮重复点击
  • Apache Pulsar 2.1 重磅发布
  • golang 发送GET和POST示例
  • Java应用性能调优
  • laravel5.5 视图共享数据
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 大整数乘法-表格法
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 马上搞懂 GeoJSON
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 线上 python http server profile 实践
  • 译米田引理
  • 在electron中实现跨域请求,无需更改服务器端设置
  • zabbix3.2监控linux磁盘IO
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #define 用法
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Oracle)SQL优化技巧(一):分页查询
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot教学评价 毕业设计 641310
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)scrum常见工具列表
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 发展历程
  • .NET 中创建支持集合初始化器的类型
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @ConfigurationProperties注解对数据的自动封装
  • [1181]linux两台服务器之间传输文件和文件夹
  • [C++]——带你学习类和对象
  • [CISCN2019 华东北赛区]Web2