python实现读取命令行参数的方法


Posted in Python onMay 22, 2015

本文实例讲述了python读取命令行参数的方法。分享给大家供大家参考。具体分析如下:

如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?

需要模块:sys
参数个数:len(sys.argv)
脚本名:    sys.argv[0]
参数1:     sys.argv[1]
参数2:     sys.argv[2]

test.py:

import sys
print "脚本名:", sys.argv[0]
for i in range(1, len(sys.argv)):
  print "参数", i, sys.argv[i]
>>>python test.py hello world

脚本名:test.py
参数 1 hello
参数 2 world

python中使用命令行选项:

例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。

要求该脚本满足以下条件:

1.通过-i -o选项来区别参数是输入文件还是输出文件.
>>> python convert.py -i inputfile -o outputfile
2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息
>>> python convert.py -h

getopt函数原形:

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

convert.py:

import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
  if op == "-i":
    input_file = value
  elif op == "-o":
    output_file = value
  elif op == "-h":
    usage()
    sys.exit()

代码解释:

a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。

b) "hi:o:": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"hi:o:"就表示"h"是一个开关选项;"i:"和"o:"则表示后面应该带一个参数。

c) 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。

getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)

长选项格式举例:

--version
--file=error.txt

让一个脚本同时支持短选项和长选项

getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python检测服务器是否正常
Feb 16 Python
python新手经常遇到的17个错误分析
Jul 30 Python
Python中多线程及程序锁浅析
Jan 21 Python
python实现逆波兰计算表达式实例详解
May 06 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
python中返回矩阵的行列方法
Apr 04 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
pybind11在Windows下的使用教程
Jul 04 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
Python中返回字典键的值的values()方法使用
May 22 #Python
python复制文件的方法实例详解
May 22 #Python
在Python中操作字典之update()方法的使用
May 22 #Python
python判断图片宽度和高度后删除图片的方法
May 22 #Python
在Python中操作字典之setdefault()方法的使用
May 21 #Python
在Python中用keys()方法返回字典键的教程
May 21 #Python
Python中使用items()方法返回字典元素对的教程
May 21 #Python
You might like
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
jquery获取radio值实例
2014/10/16 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
web.py中调用文件夹内模板的方法
2014/08/26 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Django中url的反向查询的方法
2018/03/14 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
python框架django项目部署相关知识详解
2019/11/04 Python
解决c++调用python中文乱码问题
2020/07/29 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
自荐信封面
2013/12/04 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
检讨书怎么写
2015/01/23 职场文书
计划生育目标责任书
2015/05/09 职场文书