python获取命令行输入参数列表的实例代码


Posted in Python onJune 23, 2018

(一)单一独立的参数

如果命令行输入的参数都是各自单一独立的,直接用个循环把所有参数逐一读出来就行了。sys模块里面直接用args = sys.argv就可以获取到所有参数了(返回值args是一个list),args0]是执行的python文件路径名,args[1:]后面的才是真正命令行输入的参数,用个for循环就可以一一读取args列表,示例代码如下:

import sys

def usage():
	print """
This is usage.
This is usage.
This is usage.
"""

def main(argv):
	for arg in argv[1:]:
		if arg == '-t':
			pass
		elif arg == '-h' or arg == '--help':
			usage()
			sys.exit()
		elif arg == '-p':
			pass
		else:
			print "Error: invalid parameters"
			sys.exit()

if __name__ == '__main__':
	main(sys.argv)

(二)参数结合

如果要读取:-t mytest 这样的组合参数,上面的方法就行不通了,在shell里面有shift可以直接移到下一个参数,但在python没有shift的功能,所以得换种方式。

一种方法是用getopt模块(官方文档关于getopt的解释:点击打开链接):getopt模块里面的getopt函数可以指定参数可能的类型并且获取所有参数。

用法:

getopt.getopt(args, options[, long_options])

options参数指定短式输入,也就是单横杠"-",例如"-h",long_options是可选的,用于指定长式输入,也就是双横杠"--",例如"--help"。如果是单一参数输入,options和long_options都只需要直接写参数名,例如下面这句代码指定两个单一参数:-h/--help -t/--test:

opts, args = getopt.getopt(sys.argv[1:], 'ht', ['help', 'test''])

如果是后面还要继续接参数的,options要在参数名后面加冒号":",long_options要在参数名后面加等号"=",例如下面这句代码指定三个参数:-h/--help -t/--test -r path / --root path:

opts, args = getopt.getopt(sys.argv[1:], 'htr:', ['help', 'test','root='])

getopt函数的返回值有两个,一般只用第一个,如下面的代码,第一个返回值opts :" is a list of (option, value) pairs",也就是一个 -t mytest 这样的元素对,当然如果-t后面不需要再接参数的话,那就没有value值了。利用这个pairs返回值,我们可以用个for循环获取参数,不管是单一独立的参数,还是结合的参数,都可以,示例代码如下:

import sys
import getopt

def usage():
	print """
This is usage.
This is usage.
This is usage.
"""

def main(argv):
	try:
		opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help'])
	except getopt.GetoptError:
		usage()
		sys.exit()
	
	for opt, arg in opts:
		if opt in ['-h', '--help']:
			pass
		elif opt in ['-t', '--test']:
			pass
		elif opt in ['-p', '--path']:
			param = arg
			print param
			sys.exit()
		else:
			print "Error: invalid parameters"
			usage()
			sys.exit()

if __name__ == '__main__':
	main(sys.argv)

另外,还有个知识点就是,如果想要print一大段string怎么办,用三个双引号包住即可,如上面的代码中usage函数,并且要注意的是三双引号里面的内容不用缩进,直接从最开头开始写,否则会导致出错。

以上这篇python获取命令行输入参数列表的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Web框架Pylons中使用MongoDB的例子
Dec 03 Python
python操作xml文件详细介绍
Jun 09 Python
python使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 Python
Python守护进程(daemon)代码实例
Mar 06 Python
python定时器(Timer)用法简单实例
Jun 04 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
Python 经典算法100及解析(小结)
Sep 13 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
python 经纬度求两点距离、三点面积操作
Jun 03 Python
Python进程间的通信之语法学习
Apr 11 Python
Python键盘输入转换为列表的实例
Jun 23 #Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 #Python
Python实现重建二叉树的三种方法详解
Jun 23 #Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 #Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 #Python
python和shell监控linux服务器的详细代码
Jun 22 #Python
python中plot实现即时数据动态显示方法
Jun 22 #Python
You might like
PHP n个不重复的随机数生成代码
2009/06/23 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
实例讲解Python3中abs()函数
2019/02/19 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
python实现打砖块游戏
2020/02/25 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
团支书竞选演讲稿
2014/04/28 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
Python实现双向链表基本操作
2022/05/25 Python