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创建文件和追加文件内容实例
Oct 21 Python
Python类属性与实例属性用法分析
May 09 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
flask 框架操作MySQL数据库简单示例
Feb 02 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
python操作链表的示例代码
Sep 27 Python
如何使用Pytorch搭建模型
Oct 26 Python
如何使用Tkinter进行窗口的管理与设置
Jun 30 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
JS与C#编码解码
2013/12/03 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
3分钟学会一个Python小技巧
2018/11/23 Python
opencv与numpy的图像基本操作
2019/03/08 Python
浅谈Python爬虫基本套路
2019/03/25 Python
用python写PDF转换器的实现
2020/10/29 Python
Django中ORM的基本使用教程
2020/12/22 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
软件工程师面试题
2012/06/25 面试题
职称自我鉴定
2013/10/15 职场文书
先进班集体申报材料
2014/12/26 职场文书
颐和园导游词400字
2015/01/30 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
七个非常实用的Python工具包总结
2021/06/15 Python
Django基础CBV装饰器和中间件
2022/03/22 Python
oracle数据库去除重复数据
2022/05/20 Oracle
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript