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 with statement 进行文件操作指南
Aug 22 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
python实现换位加密算法的示例
Oct 14 Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
python实现人机猜拳小游戏
Feb 03 Python
适合Python初学者的一些编程技巧
Feb 12 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
使用Python+Appuim 清理微信的方法
Jan 26 Python
Django基础CBV装饰器和中间件
Mar 22 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
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python使用urllib2提交http post请求的方法
2015/05/26 Python
Python 文件处理注意事项总结
2017/04/10 Python
python实现自动登录
2018/09/17 Python
学习python可以干什么
2019/02/26 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
numpy库reshape用法详解
2020/04/19 Python
深入浅析Python代码规范性检测
2020/07/31 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
团员个人年度总结
2015/02/26 职场文书
英文慰问信范文
2015/03/24 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
Nginx的gzip相关介绍
2022/05/11 Servers
vue实现在data里引入相对路径
2022/06/05 Vue.js