Python 获得命令行参数的方法(推荐)


Posted in Python onJanuary 24, 2018

本篇将介绍python中sys, getopt模块处理命令行参数

如果想对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
python test.py -i inputfile -o outputfile

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为分析出的格式信息。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。

上面例子中的ops为:[('h',''),('-i','inputfile'),('-o','outputfile')]

  args为不属于格式信息的剩余的命令行参数。

getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)

长选项格式举例:

--version
--file=error.txt

让一个脚本同时支持短选项和长选项

getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])

总结

以上所述是小编给大家介绍的Python 获得命令行参数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现监控windows服务并自动启动服务示例
Apr 17 Python
跟老齐学Python之画圈还不简单吗?
Sep 20 Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
在Python中使用gRPC的方法示例
Aug 08 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
Pytorch释放显存占用方式
Jan 13 Python
解决echarts中饼图标签重叠的问题
May 16 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
python exit出错原因整理
Aug 31 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
Python3读写ini配置文件的示例
Nov 06 Python
Django模型层实现多表关系创建和多表操作
Jul 21 Python
Python实现的rsa加密算法详解
Jan 24 #Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 #Python
python做量化投资系列之比特币初始配置
Jan 23 #Python
python在非root权限下的安装方法
Jan 23 #Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 #Python
Python 查看文件的读写权限方法
Jan 23 #Python
Python3 中文文件读写方法
Jan 23 #Python
You might like
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
JS Array对象入门分析
2008/10/30 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
Python本地与全局命名空间用法实例
2015/06/16 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Python Flask框架扩展操作示例
2019/05/03 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
pygame实现五子棋游戏
2019/10/29 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
国际金融专业自荐信
2014/07/05 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
改造DE1103三步曲
2022/04/07 无线电
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL