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中pycurl库的用法实例
Sep 30 Python
python Django框架实现自定义表单提交
Mar 25 Python
Python实现的直接插入排序算法示例
Apr 29 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
python3 logging日志封装实例
Apr 08 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
解决paramiko执行命令超时的问题
Apr 16 Python
Python try except else使用详解
Jan 12 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
ajax php 实现写入数据库
2009/09/02 PHP
php 静态变量的初始化
2009/11/15 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
Node.js中的事件驱动编程详解
2014/08/16 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
JS中递归函数
2016/06/17 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
python正则表达式match和search用法实例
2015/03/26 Python
Python中的Classes和Metaclasses详解
2015/04/02 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
升职自荐书范文
2013/11/28 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
运动会入场口号
2014/06/07 职场文书
三好学生事迹材料
2014/12/24 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Docker下安装Oracle19c
2022/04/13 Servers
nginx配置指令之server_name的具体使用
2022/08/14 Servers