命令行介绍

在某些特定的时候,为了使python程序能够更方便的接受用户传入的实参,命令行参数就此出现。
它能够将用户在shell console等输入的实参带进Python程序,为Python程序的可交互性提升了更好的体验。
而今天主要介绍的,便是是使用getopt模块来解析命令行参数
实现Python程序的可交互性

getopt 官方文档

官方文档: https://docs.python.org/3.1/library/getopt.html

getopt 模块

This module helps scripts to parse the command line arguments in sys.argv. It supports the same conventions as the Unix getopt() function (including the special meanings of arguments of the form ‘-‘ and ‘–‘). Long options similar to those supported by GNU software may be used as well via an optional third argument.

根据官方文档介绍, getopt 模块可以帮助Python脚本来解析命令行参数,且 getopt 模块也支持长 (--) 、短 (-) 参数。

该模块主要有两个函数
getopt.getopt
getopt.gnu_getopt
以及一个报错处理
getopt.GetoptError
下面我们主要讲解 getopt.getopt 及其相关参数

getopt.getopt 函数说明

getopt.getopt(args, options[, long_options])

方法参数说明:

args: 要解析的命令行参数列表。此列表一般通过  sys.argv 获取
options : 以字符串的格式定义,options 后的冒号 : 表示如果设置该选项,必须有附加的参数,否则就不附加参数。
long_options : 以列表的格式定义,long_options 后的等号 = 表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。
该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有 - 或 -- 的参数。
  • args 一般我们需要解析在命令行输入的所有参数,使用sys.argv[1:]获取

我创建见了一个名为 aaa.py 的python程序,并输入以下内容

import sys
args = sys.argv
for i in range(len(args)):
	print(f'This is the  num {i} parmeter:{args[i]}')

终端输入
终端输入
得到结果
在这里插入图片描述
这下就很容易理解为什么是sys.argv[1:]了
因为第一个是sys.argv[0]是指

  • args只是需要解析的命令行参数,而我们真真需要的参数,是从options中定义的
import sys
import getopt
opts, _ = getopt.getopt(sys.argv[1:], "-h-i:")
print(type(opts))
print(opts)
for opt,value in opts:
    print(f'The value of option {opt} is {value}')

终端输入如下,并得到结果
在这里插入图片描述我将函数 getopt.getopt()其中一个返回值赋值给了opts
发现opt 的类型是以 输入参数以及相应实参为元组 的列表
而且,当参数不含有实参时,其元组的第1位为空。

可能有细心的师傅已经发现了我们定义options的一些小问题,发现-i的后面有一个冒号:
在这里插入图片描述我们再回溯到上述参数说明

options : 以字符串的格式定义,options 后的冒号 : 表示如果设置该选项,必须有附加的参数,否则就不附加参数。
一般不使用:的,我们称之为开关,表示开启使用某个选项

当带有冒号时,后面必须跟有相应的实参,假设我们不带实参输入
在这里插入图片描述就出现了GetoptError的报错。

  • long_options 为可选项,熟悉命令行工具的师傅可能都知道,我们在使用某个工具中,不仅可使使用-h获取帮助信息,同样还可以使用 --help
import sys
import getopt
opts, _ = getopt.getopt(sys.argv[1:], "-h-i:",["help","input="])
print(type(opts))
print(opts)
for opt,value in opts:
    print(f'The value of option {opt} is {value}')

在这里插入图片描述同样,long_options 中的= 类似与optiions中的:,这里就不在赘述

上述代码中
我只使用了opts来接收getopt.getopt()来接受了函数的结果
另一个结果用_省略了。
实际上 getopt.getopt()返回的也是一对元组。
下面我们用代码来看一下

import sys
import getopt
opts, args = getopt.getopt(sys.argv[1:], "-h-i:",["help","input="])
print('The type of opts is :',type(opts))
print(opts)
for opt,value in opts:
    print(f'The value of option {opt} is {value}\n')
print('The type of args is :',type(args))
print(args)

在命令行中输入参数,以及运行结果如下:
在这里插入图片描述可以看到 args的类型也是列表
它接收了除命令行命令行参数外所有的内容

总的来说,getopt是一个非常容易入门的命令行工具,函数少,参数也少,适合轻量的Python命令行交互工具的开发。
若项目大型一点,还是推荐使用 optparse。
毕竟官方也说了嘛:

A more convenient, flexible, and powerful alternative is the optparse module.

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:, [ 官方文档:https://docs.python.org/zh-cn/3/library/getopt.html?highlight=getopt#module-getopt 解析命令行参数 opts, argument
在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。长格式是在Linux下引入的。许多Linux程序都支持这两种格式。在Python中提供了getopt模块很好的实现了对这两种用法的支持,而且使用简单。 一、getopt模块有两个函数,两个属性: getopt.ge...
文章目录1. 简介1.1 命令格式:1.2 命令描述1.3 示例说明1.3.1 常规带参数的脚本1.3.2 getopts的用法1.3.3 getopts与shift的结合1.3.4 getopts与shift的结合21.3.51.3.6 getopts忽略错误1.3.7 getopts参数捆绑 1. 简介 getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符
getopt模块可以用来解析运行时的输入参数。它是标准库模块,无需使用pip install安装。 getopt()函数介绍 getopt模块中主要使用的函数为getopt(),其函数原型为: def getopt(args, shortopts, longopts = []) 各个参数含义如下: args一般是sys.argv[1:], sys.argv[0]为文件名,不属于参数。 shortopts为短参数,短参数表示以一个字母表示的参数。如果短参数有值,要求在该短参数后接一个冒号':'。 getopt的使用,只用一行就可以得到所有传入的参数: opts, args = getopt.getopt(sys.argv[1:], '短参数', ["长参数"]) 参数分为短参数与长参数参数:如-v,特点是前面有一个横线-短参数,后面加一个字母;如下面的-a input1就是 长参数:如--help,特点是前面有两个横线--长参数,后面加一个字符串 所以getopt获得参数也按照这个格式,示例: 如果期待运行的命令是:python my
这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式、短选项参数实例、长选项参数实例等内容,需要的朋友可以参考下 getopt(args, options[, long_options]) 1.args表示要解析的参数. 2.options表示脚本要识别的字符.字符之间用”:”分隔,而且必须要以”:”后结尾,例如”a????️c:”. 3.long_opti...
Pythongetopt.getopt()这个函数是为了从外部输入不同的命令行选项时,对应执行不同的功能。 python提供了getopt和optparse两个模块来处理命令行参数。 其中getopt处理提供了比较简单的处理,但大部分情况下已经足以满足需求,optparse提供了相对强大的处理。 getopt getopt.getopt(sys.argv,短选项,长选项) 该方法需要三个参数, 第一个参数是需要解析的参数列表,要传入的参数就是argv[1:] 第二个参数是短格式分析串,也就是单个