前言
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']
通过返回值我们就可以在自己的代码中,根据不同命令去设计不同的逻辑处理,相当丰富了脚本的可用性。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
Go 语言中除了可以通过 os 包获取命令行参数以外,还可以通过 flag 包获取命令行参数 package main import ( "flag" "fmt" ) func main() { /* flag.Xxxx(name, value, usage) 第一个参数: 命令行参数名称 第二个参数: 命令行参数对应的默认值 第三个参数: 命令行参数对应的
C 语言中的命令行参数 argc:argv 中保存数据的个数 argv:默认情况下系统只会传入一个值,这个值就是 main 函数执行文件的路径 我们可以通过配置开发工具,或者命令行运行时以空格+参数形式传递其它参数 注意点: 无论外界传入的是什么类型, 我们拿到的都是字符串类型 #include <stdio.h> int main(int argc, const char * argv[])
问题内容: 在我的我确定,我可以在命令行后使用的功能: 使用此命令时,仅在远程主机上执行该命令。该命令在本地主机上执行。这是因为分号将两个不同的命令分开:命令和命令。 我尝试如下定义函数(注意单引号): 我试图将命令和命令放在一起,但是参数解析不取决于我给函数的内容。总是试图执行命令 在远程主机上。 如何正确定义,所以剧本正在改变进入目录后,在远程主机上执行,具有传递给参数的能力来? 问题答案:
命令行参数识别 函数原型 #include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; #include <getopt.h> int getopt_lo
问题内容: 我正在尝试通过Java执行命令行参数。例如: 上面的命令打开命令行,但是不执行或。有任何想法吗?我正在运行Windows XP,JRE6。 (我已经对问题进行了更详细的修订。以下答案很有用,但不能回答我的问题。) 问题答案: 你发布的代码使用自己的命令启动三个不同的过程。要打开命令提示符然后运行命令,请尝试以下操作(请勿自己尝试):
本文向大家介绍python采用getopt解析命令行输入参数实例,包括了python采用getopt解析命令行输入参数实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python采用getopt解析命令行输入参数的方法,分享给大家供大家参考。 具体实例代码如下: 输入的参数: 打印的结果: 希望本文所述对大家的Python程序设计有所帮助。