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开发的HTTP库requests详解
Aug 29 Python
Python 异常处理的实例详解
Sep 11 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
对numpy中布尔型数组的处理方法详解
Apr 17 Python
Pandas 合并多个Dataframe(merge,concat)的方法
Jun 08 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
Python必须了解的35个关键词
Jul 16 Python
Python xlrd/xlwt 创建excel文件及常用操作
Sep 24 Python
Python内置函数及功能简介汇总
Oct 13 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 20 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获取文件类型和文件信息的方法
2015/07/10 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
Python中的元类编程入门指引
2015/04/15 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
Python shelve模块实现解析
2019/08/28 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
迟到检讨书500字
2014/02/05 职场文书
大学生就业自荐书
2014/06/16 职场文书
学习十八大演讲稿
2014/09/15 职场文书
教师业务学习材料
2014/12/16 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
MySQL系列之三 基础篇
2021/07/02 MySQL