python通过getopt模块如何获取执行的命令参数详解

前言

python脚本和shell脚本一样可以获取命令行的参数,根据不同的参数,执行不同的逻辑处理。

通常我们可以通过getopt模块获得不同的执行命令和参数。下面话不多说了,来一起看看详细的介绍吧。

方法如下:

下面我通过新建一个test.py的脚本解释下这个模块的的使用

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import getopt
if __name__=='__main__':
 print sys.argv
 opts, args = getopt.getopt(sys.argv[1:], "ht:q:", ["url=",'out'])
 print opts
 print args

执行命令 :

./test3.py -t 20171010-20171011 -q 24 -h --url=https://www.baidu.com --out file1 file2

执行结果 :

['D:/GitReposity/hope_crontab_repo/sla_channel/test3.py', '-t', '20171010-20171011', '-q', '24', '-h', '--url=https://www.baidu.com', '--out', 'file1', 'file2']
[('-t', '20171010-20171011'), ('-q', '24'), ('-h', ''), ('--url', 'https://www.baidu.com'), ('--out', '')]
['file1', 'file2']

我们查看getopt模块的官方文档

def getopt(args, shortopts, longopts = [])

Parses command line options and parameter list. args is the
argument list to be parsed, without the leading reference to the
running program. Typically, this means "sys.argv[1:]". shortopts
is the string of option letters that the script wants to
recognize, with options that require an argument followed by a
colon (i.e., the same format that Unix getopt() uses). If
specified, longopts is a list of strings with the names of the
long options which should be supported. The leading '--'
characters should not be included in the option name. Options
which require an argument should be followed by an equal sign
('=').

The return value consists of two elements: the first is a list of
(option, value) pairs; the second is the list of program arguments
left after the option list was stripped (this is a trailing slice
of the first argument). Each option-and-value pair returned has
the option as its first element, prefixed with a hyphen (e.g.,
'-x'), and the option argument as its second element, or an empty
string if the option has no argument. The options occur in the
list in the same order in which they were found, thus allowing
multiple occurrences. Long and short options may be mixed.

可以发现getopt方法需要三个参数。

第一个参数是args是将要解析的命令行参数我们可以通过sys.argv获取执行的相关参数

['D:/GitReposity/hope_crontab_repo/sla_channel/test3.py', '-t', '20171010-20171011', '-q', '24', '-h', '--url=https://www.baidu.com'] 

可以看出参数列表的第一个值是脚本执行的完全路径名,剩余参数是以空格分割的命令行参数。为了获得有效参数,通常args参数的值取sys.argv[1:]

第二个参数是shortopts是短命令操作符,他的参数要包含命令行中以 -符号开头的参数,像上面的例子中qht都以为 -开头,所以qht是该脚本的短命令,短命令又是如何匹配参数的呢?可以看到例子中shotopts为 "ht:q:" ,这里用命令后面跟着 : 来申明这个命令是否需要参数,这里h不需要参数,t和q需要参数,而命令行中紧跟着t和q的参数即为他们的命令参数,即t的命令参数为 20171010-20171011 ,q的命令参数为 24 。

第三个参数是longopts,改参数是个数组, 表示长命令操作符集合。这个集合要包含命令行中以 -- 符号开头的参数,url和out都是长命令,当长命令后面以 = 结尾是表示他需要一个参数,比如"url=" ,他匹配命令行中的下一个参数https://www.baidu.com.

该方法返回两个数组元素。第一个返回值,是通过shortopts和longopts匹配的命令行和其参数的元祖。该例子的返回值为:

[('-t', '20171010-20171011'), ('-q', '24'), ('-h', ''), ('--url', 'https://www.baidu.com'), ('--out', '')]
['file1', 'file2']

第二个返回值是命令行中未被匹配到的参数,该例子的返回值为:

['file1', 'file2']

通过返回值我们就可以在自己的代码中,根据不同命令去设计不同的逻辑处理,相当丰富了脚本的可用性。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • python getopt详解及简单实例

     python getopt详解 函数原型: getopt.getopt(args, shortopts, longopts=[]) 参数解释: args:args为需要解析的参数列表.一般使用sys.argv[1:],这样可以过滤掉第一个参数(ps:第一个参数是脚本的名称,它不应该作为参数进行解析) shortopts:简写参数列表 longopts:长参数列表 返回值: opts:分析出的(option, value)列表对. args:不属于格式信息的剩余命令行参数列表. 源码分析 在An

  • Python getopt模块处理命令行选项实例

    getopt模块用于抽出命令行选项和参数,也就是sys.argv命令行选项使得程序的参数更加灵活.支持短选项模式和长选项模式例如  python scriptname.py -f 'hello' --directory-prefix=/home -t --format 'a' 'b' 复制代码 代码如下: import getopt, sysshortargs = 'f:t'longargs = ['directory-prefix=', 'format']opts, args = getopt

  • Python命令行参数解析模块getopt使用实例

    格式 getopt(args, options[, long_options]) 1.args表示要解析的参数. 2.options表示脚本要识别的字符.字符之间用":"分隔,而且必须要以":"后结尾,例如"a:b:c:". 3.long_options是可选的,如果指定的话,可以解析长选项.形式为字符串列表,如['foo=', 'frob='].长选项要求形式为"–name=value" 4.该方法返回2个元素.第一个元素是

  • python getopt 参数处理小示例

    opts, args = getopt.getopt(sys.argv[1:], "t:s:h", ["walletype=", "servicename=",'help']) for a,o in opts: if a in ('-t', '--walletype'): walle_type = o elif a in ('-s', '--servicename'): service_name = o elif a in ('-h', '--h

  • python采用getopt解析命令行输入参数实例

    本文实例讲述了python采用getopt解析命令行输入参数的方法,分享给大家供大家参考. 具体实例代码如下: import getopt import sys config = { "input":"", "output":".", } #getopt三个选项,第一个一般为sys.argv[1:],第二个参数为短参数,如果参数后面必须跟值,须加:,第三个参数为长参数 #是一个列表, opts, args = getopt.g

  • Python中的getopt函数使用详解

    函数原型: getopt.getopt(args, shortopts, longopts=[]) 参数解释: args:args为需要解析的参数列表.一般使用sys.argv[1:],这样可以过滤掉第一个参数(ps:第一个参数是脚本的名称,它不应该作为参数进行解析) shortopts:简写参数列表 longopts:长参数列表 返回值: opts:分析出的(option, value)列表对. args:不属于格式信息的剩余命令行参数列表. 源码分析 在Android生成OTA的build系

  • python通过getopt模块如何获取执行的命令参数详解

    前言 python脚本和shell脚本一样可以获取命令行的参数,根据不同的参数,执行不同的逻辑处理. 通常我们可以通过getopt模块获得不同的执行命令和参数.下面话不多说了,来一起看看详细的介绍吧. 方法如下: 下面我通过新建一个test.py的脚本解释下这个模块的的使用 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import getopt if __name__=='__main__': print sys.argv opts,

  • python下os模块强大的重命名方法renames详解

    python下os模块强大的重命名方法renames详解 在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS模块提供了超过200个方法来供我们使用,并且这些方法都是和数据处理相关的,这里介绍下重命名这个方法. OS的重命名方法是os.rename,我用的ipython,这个玩意很是强大,只要按下TAB键,可以帮助我们自动对齐和列出可以使用的方法,发现有2个方法,分别是rename和renames,2个方法,前面的rename使用过无数次,但是后面的renames还没有使用过

  • 对python中 math模块下 atan 和 atan2的区别详解

    atan 和 atan2 都是反正切函数,返回的都是弧度 对于两点形成的直线,两点分别是 point(x1,y1) 和 point(x2,y2),其斜率对应角度的计算方法可以是: angle = atan( (y2-y1)/(x2-x1) ) 或 angle = atan2( y2-y1, x2-x1 ) 因此可以看出 atan 和 atan2 的区别: 1.参数的个数不同:atan 为单个参数,atan2为两个参数 2.atan2 的优点在于: 如果 x2-x1等于0 ,角度依然可以计算,但是

  • Webpack执行命令参数详解

    一.概述 前面的章节我们讲解了webpack的安装.webpack.config.js的 基本配置.webpack执行命名以及require方法的使用,不 知道大家有没有发现,当我们每次修改或者新增一个js文件的时候,就会重新执行一下webpack 命令进行编译,这种方式非常的麻烦,这样整个项目下来岂不是要执行百万次.接下来我们会讲解webpack相关的参数,避免这个情况. 二.参数详解 在webpack执行命令之后可以添加一些参数,这些参数都有自己的作用,下面是参数列表: $ webpack

  • python通过百度地图API获取某地址的经纬度详解

    前言 这几天比较空闲,就接触了下百度地图的API(开发者中心链接地址:http://developer.baidu.com),发现调用还是挺方便的,本文将给大家详细的介绍关于python通过百度地图API获取某地址的经纬度的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 申请百度API 1.打开网页 http://lbsyun.baidu.com/index.php?title=首页 选择功能与服务中的地图,点击左边的获取密匙,然后按照要求申请即可,需要手机和百度账号

  • Python数据可视化之matplotlib.pyplot绘图的基本参数详解

    目录 1.matplotlib简介 2.图形组成元素的函数用法 2.1. figure():背景颜色 2.2 xlim()和 ylim():设置 x,y 轴的数值显示范围 2.3 xlabel()和 ylabel():设置 x,y 轴的标签文本 2.4 grid():绘制刻度线的网格线 2.5 axhline():绘制平行于 x 轴额度水平参考线 2.6 axvspan():绘制垂直于 x 轴的参考区域 2.7 xticks(),yticks() 2.8 annotate():添加图形内容细节的

  • Python的shutil模块中文件的复制操作函数详解

    copy() chutil.copy(source, destination) shutil.copy() 函数实现文件复制功能,将 source 文件复制到 destination 文件夹中,两个参数都是字符串格式.如果 destination 是一个文件名称,那么它会被用来当作复制后的文件名称,即等于 复制 + 重命名.举例如下: >> import shutil >> import os >> os.chdir('C:\\') >> shutil.co

  • Python之inspect模块实现获取加载模块路径的方法

    该文主要介绍如何获取模块的路径,需要申明的是这里所说的模块可以是功能实现的该模块,也可以是别的模块. 使用到的是 inspect 模块的 .getsourcefile(需要获取的模块名) 创建test.py内容如下: import os import inspect class pathManager(object): def __init__(self): pass def _abPath(self): modulePath = inspect.getsourcefile(os) abPath

  • Python使用paramiko连接远程服务器执行Shell命令的实现

    需求 在自动化测试场景里, 有时需要在代码里获取远程服务器的某些数据, 或执行一些查询命令,如获取Linux系统版本号 \ 获取CPU及内存的占用等, 本章记录一下使用paramiko模块SSH连接服务器的方法 1. 先安装paramiko库 pip3 install paramiko 2. 代码 #!/usr/bin/env python # coding=utf-8 """ # :author: Terry Li # :url: https://blog.csdn.net

  • python os.system执行cmd指令代码详解

    1.执行cmd指令,在cmd输出的内容会直接在控制台输出,返回结果为0表示执行成功. 2.在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码. os.system()方法是简单粗暴的执行cmd指令,没有办法获取到cmd输出的内容. 实例 # coding:utf-8 import os os.system("ls") Python如何使用OS模块调用cmd 在os模块中提供了两种调用 cmd 的方法,os.popen() 和 os

随机推荐