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中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
Python访问MySQL封装的常用类实例
Nov 11 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
Django框架多表查询实例分析
Jul 04 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
python实现超市管理系统(后台管理)
Oct 25 Python
python实现简单贪吃蛇游戏
Sep 29 Python
python文件目录操作之os模块
May 08 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
Python global全局变量函数详解
2018/09/18 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
教师新年寄语
2014/04/03 职场文书
《观舞记》教学反思
2014/04/16 职场文书
离婚协议书范本样本
2014/08/19 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
转学证明范本
2015/06/19 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL