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中__str__和__repr__方法的区别
Apr 17 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
Python实现Linux的find命令实例分享
Jun 04 Python
Python中一行和多行import模块问题
Apr 01 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
pandas通过索引进行排序的示例
Nov 16 Python
Python装饰器基础概念与用法详解
Dec 22 Python
python读取目录下最新的文件夹方法
Dec 24 Python
详解python的四种内置数据结构
Mar 19 Python
python3人脸识别的两种方法
Apr 25 Python
基于Django实现日志记录报错信息
Dec 17 Python
基于Python实现简单学生管理系统
Jul 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
PHP SEO优化之URL优化方法
2011/04/21 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
AngularJS基础知识
2014/12/21 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
东方电视购物:东方CJ
2016/10/12 全球购物
体育教学随笔感言
2014/02/24 职场文书
公司会议策划方案
2014/05/17 职场文书
2014年个人总结范文
2015/03/09 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书