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文件写入实例分析
Apr 08 Python
python网络编程之数据传输UDP实例分析
May 20 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
基于Python正确读取资源文件
Sep 14 Python
python3中确保枚举值代码分析
Dec 02 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 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中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
php技巧小结【推荐】
2017/01/19 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
.NET现在共支持多少种语言
2014/02/26 面试题
体育学院毕业生自荐信
2013/11/03 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
善意的谎言事例
2014/02/15 职场文书
《搭石》教学反思
2014/04/07 职场文书
公司委托书格式范本
2014/09/16 职场文书
仓管员岗位职责
2015/02/03 职场文书
门卫管理制度范本
2015/08/05 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
python for循环赋值问题
2021/06/03 Python
图文详解nginx日志切割的实现
2022/01/18 Servers
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸