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备份文件以及mysql数据库的脚本代码
Jun 10 Python
Python中用Decorator来简化元编程的教程
Apr 13 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python语言描述最大连续子序列和
Dec 05 Python
Python返回数组/List长度的实例
Jun 23 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
python求前n个阶乘的和实例
Apr 02 Python
python如何进行基准测试
Apr 26 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
我的论坛源代码(十)
2006/10/09 PHP
PHP 转义使用详解
2013/07/15 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
python re模块findall()函数实例解析
2018/01/19 Python
python实现飞机大战
2018/09/11 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
学院书画协会部门岗位职责
2013/12/01 职场文书
物理研修随笔感言
2014/02/14 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
python3操作redis实现List列表实例
2021/08/04 Python
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技