随着我们编程经验的增长,对命令行的熟悉程度日渐加深,想来很多人会渐渐地体会到使用命令行带来的高效率。Python如何解析命令行?优雅地解析命令行的方法有哪些?本文将通过两种方法给大家做出解答,需要的可以参考一下。
在学习python的时候,我们会经常自己写很多程序,在对命令行慢慢熟悉之后,都会想让高效的对命令行进行操作,使得开发效率得到提高,那么我们这样做需要才不像听起来那么麻烦呢,请看下面的两种方法。
1、手动解析
手动解析需要用到命令行参数,之前我们在对模块的学习时,提到过sys.args这个变量,它就是用来对一个脚本进行调用且传入命令行的一个参数,举个例子看看它的使用过程:
#HH.py
import sys
print(sys.argv)
对它进行调用
$ python test_sys.py -d today -t now --author justdopython --country China --auto
获得的结果:
['HH.py', '-d', 'today', '-t', 'now', '--author', 'justdopython', '--country', 'China', '--auto']
从调用结果我们可以了解到,这个变量它可以让我们的命令行参数使用空格进行切分,会得到一个字符串列表,而它的第一个参数就是我们的我们运行的脚本文件。
2、getopt模块
python中存在各种功能有些是别人已经写好的模块,直接就可以 拿来使用的,比如在对命令行参数解析的时候就可以使用到getopt模块,它能帮助我们很好的区分长短命令行参数,还可以对命令行参数的值进行提取。举个例子:
#HH.py
import sys
import getopt
opts, args = getopt.getopt(sys.argv[1:], 'd:t:', ["author=", "country=", "auto"])
print(opts)
print(args)
打印结果:
$ python test_getopt.py -d today -t now --author justdopython --country China --auto
[('-d', 'today'), ('-t', 'now'), ('--author', 'justdopython'), ('--country', 'China'), ('--auto', '')]
[]
通过以上案例,我们知道在getopt模块中的getopt函数它是用来对一个命令行参数进行解析的。这个函数它可以接受三个参数:args,shortopts和longopts,分别代表“命令行参数”,“要接收的短选项”和“要接收的长选项”。其中args和longopts均为字符串组成的列表,而shortopts则为一个字符串。
本文讲解了Python如何解析命令行?优雅地解析命令行的方法有哪些?一共讲解了两种方法,一种是略显笨重的手动解析,即自己编写程序自定义解析;另一种则是调用现成、且更加健壮的getopt模块来完成解析。希望对大家的学习有所帮助!