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格式化压缩后的JS文件的方法
Mar 05 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
Python给图像添加噪声具体操作
Mar 03 Python
Python面向对象进阶学习
May 21 Python
python3.7 sys模块的具体使用
Jul 22 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
python__new__内置静态方法使用解析
Jan 07 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
python中常用的数据结构介绍
Jan 12 Python
Pytest allure 命令行参数的使用
Apr 18 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采集类Snoopy抓取图片实例
2014/06/19 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
js+css实现打字效果
2020/06/24 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
个人社会实践自我鉴定
2014/03/24 职场文书
公益广告标语
2014/06/19 职场文书
励志演讲稿500字
2014/08/21 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
学生打架检讨书
2014/10/20 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python