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简单删除目录下文件以及文件夹的方法
May 27 Python
通过数据库向Django模型添加字段的示例
Jul 21 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
用Python实现数据的透视表的方法
Nov 16 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
Python常用数据分析模块原理解析
Jul 20 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
python tqdm实现进度条的示例代码
Nov 10 Python
python 自动刷新网页的两种方法
Apr 20 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php 常用类整理
2009/12/23 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
Python编程之变量赋值操作实例分析
2017/07/24 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Python下简易的单例模式详解
2019/04/08 Python
Django后台admin的使用详解
2019/07/08 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
六一节目主持词
2014/04/01 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
学党史心得体会
2014/09/05 职场文书
房产协议书范本2014
2014/09/30 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
团员自我评价范文
2015/03/10 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技
Java设计模式中的命令模式
2022/04/28 Java/Android