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 相关文章推荐
详解Python3.1版本带来的核心变化
Apr 07 Python
python获取元素在数组中索引号的方法
Jul 15 Python
Python 文件处理注意事项总结
Apr 10 Python
Python2随机数列生成器简单实例
Sep 04 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
详解Python 切片语法
Jun 10 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
python 创建一维的0向量实例
Dec 02 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
Python实现异步IO的示例
Nov 05 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(6) 面向对象
2010/02/16 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
Python新手如何理解循环加载模块
2020/05/29 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
中学生励志演讲稿
2014/04/26 职场文书
财政局个人年终总结
2015/03/03 职场文书
表扬信格式模板
2015/05/05 职场文书
聘任合同书
2015/09/21 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
Python利用folium实现地图可视化
2021/05/23 Python