Python编写带选项的命令行程序方法


Posted in Python onAugust 13, 2019

运行python程序时,有时需要在命令行传入一些参数。常见的方式是在执行时,在脚本名后直接追加空格分隔的参数列表(例如 python test.py arg0 arg1 arg2),然后在脚本中就可以通过sys.argv获取所有的命令行参数。

这种方式的优点是传参方便,参数获取简单;缺点是执行脚本时,必须知道参数的顺序,并且不能设置默认值,所有参数每次都必须传入。

还有一种命令行传参方式是通过带选项的方式进行传参(例如python test.py -p0=arg0 -p1=arg1)。

这种方式的优点是参数不用按照固定的顺序传入,并且对于有默认值的参数,可以不传参数直接使用默认值;缺点是传入参数时需要额外加上选项。

对于带选项的命令行参数,可以通过python自带的getopt模块来进行解析。

主要方法:

getopt(args, shortopts, longopts = []):解析命令行选项和参数列表。

args是不包括运行程序引用的参数列表,通常来说就是sys.args[1:]。

shortopts是脚本要识别的短选项字母,如果短选项需要参数,需要在字母后加冒号“:”。

longopts是支持的长选项,是一个长选项名称的列表。选项名称不包括“-”。需要参数的长选项,需要在后面加一个等号“=”。

返回值包括两个列表:第一个列表中是(选项,值),如果选项没有参数,值为空字符串。第二个列表是剥离选项之后的程序参数列表。长项前用“--”,短项前用“-”。

另外要注意的是当进行命令行参数解析时,如果遇到了非选项的参数时,就会停止带选项参数的解析。

简单示例

#!/usr/bin/python
# -*- coding: gbk -*-
import sys
import getopt
def printUsage():
	print ('''usage: test.py -i <input> -o <output>
    test.py --in=<input> --out=<output>''')
 
def main():
	inputarg=""
	outputarg=""
	try:
		opts, args = getopt.getopt(sys.argv[1:],"hi:o:",["in=","out="])
	except getopt.GetoptError:
		printUsage()
		sys.exit(-1)
	for opt,arg in opts:
		if opt == '-h':
			printUsage()
		elif opt in ("-i", "--in"):
			inputarg=arg
		elif opt in ("-o","--out"):
			outputarg=arg
	print ('输入:'+inputarg)
	print ('输出:'+outputarg)
	print ('其他程序参数:'+",".join(args))
if __name__=="__main__":
	main()

以上这篇Python编写带选项的命令行程序方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python模块restful使用方法实例
Dec 10 Python
Python中的测试模块unittest和doctest的使用教程
Apr 14 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
python自动化生成IOS的图标
Nov 13 Python
python系列 文件操作的代码
Oct 06 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
python中setuptools的作用是什么
Jun 19 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
Python入门学习之类的相关知识总结
May 25 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 Python
彻底弄懂Python中的回调函数(callback)
Jun 25 Python
使用python模拟命令行终端的示例
Aug 13 #Python
在macOS上搭建python环境的实现方法
Aug 13 #Python
解决Mac下使用python的坑
Aug 13 #Python
python 接口实现 供第三方调用的例子
Aug 13 #Python
python 爬取学信网登录页面的例子
Aug 13 #Python
利用anaconda作为python的依赖库管理方法
Aug 13 #Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 #Python
You might like
PHP 高手之路(一)
2006/10/09 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
资源环境与城市管理专业推荐信
2013/11/30 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
文秘人员工作职责
2014/01/31 职场文书
小学生安全保证书
2014/02/01 职场文书
执行总经理岗位职责
2014/02/03 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
小学教师师德承诺书
2014/05/23 职场文书
土建施工员岗位职责
2014/07/16 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
排球赛新闻稿
2015/07/17 职场文书