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开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
Python字符串的一些操作方法总结
Jun 10 Python
python语言基本语句用法总结
Jun 11 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
Python函数装饰器原理与用法详解
Aug 16 Python
python deque模块简单使用代码实例
Mar 12 Python
Django DRF路由与扩展功能的实现
Jun 03 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
基于python实现操作redis及消息队列
Aug 27 Python
python 模块重载的五种方法
Apr 24 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
PHP4实际应用经验篇(8)
2006/10/09 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
php构造函数实例讲解
2013/11/13 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
python生成验证码图片代码分享
2016/01/28 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
纪录片信仰观后感
2015/06/08 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers