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实现数组插入新元素的方法
May 22 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
python实现学生信息管理系统
Apr 05 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
python中的二维列表实例详解
Jun 19 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
python 项目目录结构设置
Feb 14 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
用Python写一个简易版弹球游戏
Apr 13 Python
python 下划线的多种应用场景总结
May 12 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
python的类方法和静态方法
2014/12/13 Python
Python实现建立SSH连接的方法
2015/06/03 Python
Python获取当前路径实现代码
2017/05/08 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
python自动发送邮件脚本
2018/06/20 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
如何更优雅地写python代码
2019/07/02 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
Python 忽略文件名编码的方法
2020/08/01 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
六一儿童节主持开场白
2015/05/28 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书