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的While循环语句的使用方法
Oct 13 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
Python无头爬虫下载文件的实现
Apr 02 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
PyTorch-GPU加速实例
Jun 23 Python
详解Python高阶函数
Aug 15 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 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
PDO::getAttribute讲解
2019/01/28 PHP
Javascript注入技巧
2007/06/22 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
python使用pil生成图片验证码的方法
2015/05/08 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
Python_LDA实现方法详解
2017/10/25 Python
详解python实现线程安全的单例模式
2018/03/05 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
工地资料员岗位职责
2013/12/31 职场文书
玲玲的画教学反思
2014/02/04 职场文书
优秀求职信
2014/05/29 职场文书
汽车维修求职信
2014/06/15 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python