python命令行传参详解,optparse模块OptionParse类的学习
官网链接:https://docs.python.org/3/library/optparse.html
https://docs.python.org/2/library/argparse.html
- from optparse import OptionParser
- parser = OptionParser()
- parser.add_option("-f", "--file", dest="filename",
- help="write report to FILE", metavar="FILE")
- (options, args) = parser.parse_args()
- print(options,type(options),args,type(args)) #print(type([])) 结果:<class 'list'>
options,是个类,dest是键值对里的键,值是None,args是列表,空
没传参的时候
-f 空格指定字符串,会将它作为dest里filename的值,
我再加一个短横线,结果还是可以的 --f
使用--file 也可以
其它字符串,不在--file后的那个,无论在它前面还是后面,都加进了args列表里。
临时给程序加个-m
也是可以用的
后面再用这个的,被覆盖掉了
代码现在如下,调用它的值
调用它的值,点来调用
- from optparse import OptionParser
- parser = OptionParser()
- parser.add_option("-f", "--file", dest="filename",
- help="write report to FILE", metavar="FILE")
- (options, args) = parser.parse_args()
- with open('%s'%options.filename,mode='w',encoding='utf-8') as f:
- f.write('我是小马过河')
- if "mcw" in args:
- print('欢迎mcw',args)
这样就可以指定文件做操作,传参中有啥参数也可以做对应参数了。
-h或者--help可以查看帮助信息,指定参数的介绍信息
添加-q参数,多了一组键值对,命令行加上-q值是假,不加也就是默认是真。(自解:可用于某个功能或其它是否开启或其他并给出默认状态)
- from optparse import OptionParser
- parser = OptionParser()
- parser.add_option("-f", "--file", dest="filename",
- help="write report to FILE", metavar="FILE")
- parser.add_option("-q", "--quiet",
- action="store_false", dest="verbose", default=True,
- help="don't print status messages to stdout")
- (options, args) = parser.parse_args()
- print(options,args)
代码
官网介绍
- optparse是一个比旧getopt模块更方便、灵活和强大的命令行选项解析库。 optparse使用更具声明性的命令行解析风格:创建 的实例 OptionParser,用选项填充它,然后解析命令行。optparse允许用户在传统的 GNU/POSIX 语法中指定选项,并额外为您生成使用和帮助消息。
- 这是optparse在简单脚本中使用的示例:
- from optparse import OptionParser
- ...
- parser = OptionParser()
- parser.add_option("-f", "--file", dest="filename",
- help="write report to FILE", metavar="FILE")
- parser.add_option("-q", "--quiet",
- action="store_false", dest="verbose", default=True,
- help="don't print status messages to stdout")
- (options, args) = parser.parse_args()
- 使用这几行代码,您的脚本用户现在可以在命令行上执行“常规操作”,例如:
- <yourscript> --file=outfile -q
- 当它解析命令行时,根据用户提供的命令行值optparse设置options返回的对象的属性 parse_args()。当parse_args()解析此命令行返回时,options.filenamewill be"outfile"并且options.verbosewill be False。 optparse支持长选项和短选项,允许将短选项合并在一起,并允许选项以多种方式与其参数相关联。因此,以下命令行都等效于上面的示例:
- <yourscript> -f outfile --quiet
- <yourscript> --quiet --file outfile
- <yourscript> -q -foutfile
- <yourscript> -qfoutfile
- 此外,用户可以运行以下之一
- <yourscript> -h
- <yourscript> --help
- 并且optparse将打印出你的脚本选项的简介:
- Usage: <yourscript> [options]
- Options:
- -h, --help show this help message and exit
- -f FILE, --file=FILE write report to FILE
- -q, --quiet don't print status messages to stdout
- 其中yourscript的值是在运行时确定的(通常来自 sys.argv[0])。
官网介绍
- <yourscript> --file=outfile -q
因此,以下命令行都等效于上面的示例:
- <yourscript> -f outfile --quiet
- <yourscript> --quiet --file outfile
- <yourscript> -q -foutfile
- <yourscript> -qfoutfile
- 首先,需要导入OptionParser类;然后,在主程序的早期,创建一个 OptionParser 实例:
- from optparse import OptionParser
- ...
- parser = OptionParser()
- 然后您可以开始定义选项。基本语法是:
- parser.add_option(opt_str, ...,
- attr=value, ...)
- 每个选项都有一个或多个选项字符串,例如-f或--file,以及几个选项属性,用于告诉optparse在命令行上遇到该选项时会发生什么以及要做什么。
- 通常,每个选项都有一个短选项字符串和一个长选项字符串,例如:
- parser.add_option("-f", "--file", ...)
- 您可以随意定义任意数量的短选项字符串和任意数量的长选项字符串(包括零),只要总体上至少有一个选项字符串即可。
- 传递给的选项字符串OptionParser.add_option()实际上是该调用定义的选项的标签。为简洁起见,我们会经常提到 在命令行中遇到一个选项;实际上,optparse 遇到选项字符串并从中查找选项。
- 定义所有选项后,指示optparse解析程序的命令行:
- (options, args) = parser.parse_args()
- (如果您愿意,可以将自定义参数列表传递给parse_args(),但这很少需要:默认情况下它使用sys.argv[1:]。)
- parse_args() 返回两个值:
- options, 一个包含所有选项值的对象——例如,如果 --file采用单个字符串参数,options.file则将是用户提供的文件名,或者None如果用户没有提供该选项
- args,解析选项后剩余的位置参数列表
- 本教程部分仅涵盖四个最重要的选项属性: action、type、dest (目的地)和help。其中,action是最基本的。
官网介绍2
最常见的选项操作是store
,它告诉optparse
采用下一个参数(或当前参数的其余部分),确保它的类型正确,并将其存储到您选择的目的地。
例如:
- parser.add_option("-f", "--file",
- action="store", type="string", dest="filename")
模拟传参,假的传参,结果一样
终端上效果一致的传参,不用创建列表,将列表传进去,貌似argv[1:]的参数就是一个列表,默认传递到parse_args方法中,遇到定义的-f之类的,就会将后面那个值存到dest中,作为定义的dest的值,而其它没用add_option的就传到args列表中
不加类型,传递的是字符串。action默认是store,可以不填
要想传递进去是个数字,就要加类型的参数是int
还可以拼接在一起传参
之前的也可以简写:也可以拼在一起传参
选项参数是42 选项卡是-n 这一次,我们将选项参数与选项卡在一起:因为-n42
(一个参数)等价于 (两个参数),代码-n 42 传递进的是
["-n42"]
-q没有默认值,不传参就是None,传了参数就是false
可以引号引起来当成一个
选项卡刚刚试了试可以是传字母数字字符串,但是-只能加一个字符串,;要想用多个字符串,必须用--添加长字符串
- optparse自动生成帮助和使用文本的能力对于创建用户友好的命令行界面非常有用。您所要做的就是help为每个选项提供一个值,并可选择为整个程序提供一个简短的使用消息。这是一个填充了用户友好(记录)选项的 OptionParser:
- usage = "usage: %prog [options] arg1 arg2"
- parser = OptionParser(usage=usage)
- parser.add_option("-v", "--verbose",
- action="store_true", dest="verbose", default=True,
- help="make lots of noise [default]")
- parser.add_option("-q", "--quiet",
- action="store_false", dest="verbose",
- help="be vewwy quiet (I'm hunting wabbits)")
- parser.add_option("-f", "--filename",
- metavar="FILE", help="write output to FILE")
- parser.add_option("-m", "--mode",
- default="intermediate",
- help="interaction mode: novice, intermediate, "
- "or expert [default: %default]")
官网帮助信息生成
- from optparse import OptionParser
- parser = OptionParser()
- usage = "usage: %prog [options] arg1 arg2"
- parser = OptionParser(usage=usage)
- parser.add_option("-v", "--verbose",
- action="store_true", dest="verbose", default=True,
- help="make lots of noise [default]")
- parser.add_option("-q", "--quiet",
- action="store_false", dest="verbose",
- help="be vewwy quiet (I'm hunting wabbits)")
- parser.add_option("-f", "--filename",
- metavar="FILE", help="write output to FILE")
- parser.add_option("-m", "--mode",
- default="intermediate",
- help="interaction mode: novice, intermediate, "
- "or expert [default: %default]")
- (options, args) = parser.parse_args()
- print(options,args)
执行生成帮助代码
定义帮助信息中%default会使用默认的值,%prog代表脚本名字,定义了Usage消息
至此,命令行传参大部分场景可以使用了,其它功能有时间再补充
python命令行传参详解,optparse模块OptionParse类的学习的更多相关文章
- 再探命令行传参之c与python
继上一次java命令行传参 python sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互,如:python解释 ...
- C#进阶系列——WebApi 接口参数不再困惑:传参详解
前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...
- WebApi 接口参数不再困惑:传参详解
阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.“怪异”的get请求 二.post请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.后台发送请求参数的 ...
- WebApi接口传参不再困惑(4):传参详解(转载)
WebApi接口传参不再困惑(4):传参详解 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方 ...
- 【转】C#进阶系列——WebApi 接口参数不再困惑:传参详解
原文地址:http://www.cnblogs.com/landeanfen/archive/2016/04/06/5337072.html 阅读目录 一.get请求 1.基础类型参数 2.实体作为参 ...
- C#WebApi 接口参数不再困惑:传参详解
前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...
- [转]C#进阶系列——WebApi 接口参数不再困惑:传参详解
本文转自:http://www.cnblogs.com/landeanfen/p/5337072.html#_label1_2 阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作 ...
- Java小tips之命令行传参
在命令行运行主函数时,后缀字符串,则会储存在args[]数组中,这种方法可以在程序运行时,借助Main函数传参 主类书写不规范见谅 ```java public class hello{ public ...
- Java方法:命令行传参,重载,可变参数,递归
Java方法:System.out.println()//系统类.out对象.输出方法Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中 ...
- Day006 命令行传参
命令行传参 有时候你希望运行一个程序时候再传递给它消息,这要靠传递命令行参数给main()函数实现. 使用方法 写测试代码. public static void main(String[] args ...
随机推荐
- Pandas统计计算
基本的统计方法 Method Description count Number of non-NA values describe Compute set of summary statistics ...
- QImage 与 Mat 互转
QImage 转 Mat Mat QImage2Mat(QImage &img) { cv::Mat mat; switch (img.format()) { case QImage::For ...
- openGauss Gin 索引
openGauss Gin 索引 概述 GIN(Generalized Inverted Index)通用倒排索引,是首选的文本搜索索引类型.倒排索引对应的列上的数据类型通常是一个多值类型,索引中包含 ...
- Device Partner平台合作伙伴认证和数据安全保护
Device Partner平台是面向AIoT产业链伙伴的一站式服务平台,伙伴可以通过平台获取最新的产品.服务与解决方案,实现智能硬件产品的开发.认证.量产和推广等全生命周期的管理,加入Harmon ...
- Luogu P3007 奶牛议会
观前须知 本题解使用 CC BY-NC-SA 4.0 许可. 同步发布于 Luogu 题解区. 更好的观看体验 请点这里. 笔者的博客主页 正文 Luogu P3007 [USACO11JAN] Th ...
- 重新整理数据结构与算法(c#)—— 顺序存储二叉树[十九]
前言 二叉树顺序存bai储是二叉树的一种存储方式.将二du叉树存储在一zhi个数组中,通过存储元素的下dao标反映元素之间的父子关系. 正文 这个概念比较简单,比如一个节点的在数组的index是x,那 ...
- node统计指定文件夹内代码行数
1. 来源 想对于自己接触前端日常学习与思考的代码行数进行一个统计,看自己大约敲了多少代码 2.代码 const fs = require('fs') const path = require('pa ...
- Dapr Outbox 执行流程
Dapr Outbox 是1.12中的功能. 本文只介绍Dapr Outbox 执行流程,Dapr Outbox基本用法请阅读官方文档 .本文中appID=order-processor,topic= ...
- 安装Visual Studio 2010 教程
1.下载软件 方法一:关注[ 火耳软件安装 ]公众号获取软件,里面还有很多类型的其他软件 或者: 方法二:我的分享链接:https://pan.baidu.com/s/1_Ow2YR-kbnbSc6o ...
- Go原生插件使用问题全解析
简介: 本人在设计和落地基于Go原生插件机制的扩展开发产品时踩到了很多坑,由于这方面相关资料很少,因而借此机会做一个非常粗浅的总结,希望能对大家有所帮助.本文只说问题和解决方案,不读代码. 作者 | ...