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之通过Python连接数据库
Oct 28 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
简单了解python变量的作用域
Jul 30 Python
python super用法及原理详解
Jan 20 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
Pygame Time时间控制的具体使用详解
Nov 17 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无限分类的深入理解
2013/06/02 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
再谈javascript原型继承
2014/11/10 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
查看django版本的方法分享
2018/05/14 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
Python微信操控itchat的方法
2019/05/31 Python
python实现3D地图可视化
2020/03/25 Python
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
个人简历中自我评价
2014/02/11 职场文书
党风廉政建设责任书
2014/04/14 职场文书
工作所在部门证明
2014/09/21 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS