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学习之面向对象【入门初级篇】
Jan 21 Python
Python变量和字符串详解
Apr 29 Python
python实现简单登陆系统
Oct 18 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
python实现Virginia无密钥解密
Mar 20 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
pandas处理csv文件的方法步骤
Oct 16 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 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字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
解析link_mysql的php版
2013/06/30 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
js的event详解。
2006/09/06 Javascript
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
Javascript的闭包
2009/12/31 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
XML文档面试题
2015/08/05 面试题
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
Laravel中Kafka的使用详解
2021/03/24 PHP
2014年国培研修感言
2014/03/09 职场文书
质量管理标语
2014/06/12 职场文书
会计个人实习计划书
2014/08/15 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
如何写好竞聘报告
2019/04/03 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android