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 ...
随机推荐
- nginx启用HTTP2特性
本文于2017年2月底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 查看当前nginx的编译选项 #./nginx -V nginx v ...
- WPF入门-导航页
本文适合有winform或web前端基础,且有C#开发基础的同学学习. 本文介绍的开发模式属于MVVM,即Model-View-ViewModel .这种开发模式上手简单,开发迅速. wpf入门第一篇 ...
- 《深入理解Java虚拟机》读书笔记:HotSpot的算法实现
HotSpot的算法实现 HotSpot的算法实现概要 1.枚举根节点 由于目前的主流Java虚拟机使用的都是准确式GC(这个概念在第1章介绍Exact VM对Classic VM的改进时讲过),所以 ...
- 【#HDC2022】HarmonyOS体验官活动正式开启,赶快投稿赢限量奖品吧!
1. [活动简介] HDC 2022 于11月4日线上线下正式开启.历时一年,在无数开发者的共同努力下,我们汇聚了HarmonyOS生态的新成果.新体验.新开放能力,邀你参与到HarmonyOS的 ...
- Sample上新,从API 8开始支持!速来拿走
原文:https://mp.weixin.qq.com/s/TxUOSXySZRwQaECenxt-Og ,点击链接查看更多技术内容. 搭载API 8的新SDK已经发布.围绕着新SDK,官方贴心地输出 ...
- Vue3.0 框架搭建的后台管理模板
一个Vue3.0框架搭建的后台管理模板 开源vue3.0版本基于vue3.x+ant-design-vue构建的免费开源admin项目,star高达8.4K+ 支持电脑端.手机.平板等平台 底层使用e ...
- Javscript数组的常用方法有哪些?
数组基本操作可以归纳为 增.删.改.查,需要留意的是哪些方法会对原数组产生影响,哪些方法不会 下面对数组常用的操作方法做一个归纳 增 下面前三种是对原数组产生影响的增添方法,第四种则不会对原数组产生影 ...
- 力扣476(java)-数字的补数(简单)
题目: 对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数. 例如,整数 5 的二进制表示是 "101" ,取反后得到 "0 ...
- SchedulerX 如何帮助用户解决分布式任务调度难题?
简介:本文分别对任务调度平台的资源定义.可视化管控能力.分布式批处理能力进行了简述,并基于 SchedulerX 的能力结合实际业务场景提供了一些基础参考案例.希望通过上述内容能让大家方便地熟悉任务 ...
- 2021年阿里云年中钜惠攻略,注册即可抽 iPhone 12 Pro 等好礼
简介: 七月流火,燃情盛夏!值此季节,阿里云又推出了年中钜惠,精选百款产品,助力创业新势力.从7月26日开始,每天上午10点.下午4点将会放出爆款产品,进行限量秒杀,大家不要错过.注册登陆还可抽取 i ...