Python命令行参数解析模块汇总
Posted Xavier Jiezou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python命令行参数解析模块汇总相关的知识,希望对你有一定的参考价值。
引言
Python共有四种常用的实现命令行参数解析的模块,本文是对这些模块的汇总。
sys.argv
optparse
getopt
argparse
安装
因为它们都是Python内置的标准库,所以无需安装。
用法
sys.argv👍
sys.argv
是实现命令行参数解析最简单的方式,它是传递给Python脚本的命令行参数的列表。特别地,argv[0]
代表脚本名。
推荐
⭐⭐⭐⭐⭐
示例
# 1_sys.argv.py
import sys
def add(a, b):
return a+b
if __name__ == '__main__':
print(add(int(sys.argv[1]), int(sys.argv[2])))
运行
python 1_sys.argv.py 1 2
输出
3
getopt
getopt
命令行参数解析模块的API设计与C引言的getopt()
函数类似,这有助于在sys.argv
中解析参数。但现在几乎没人使用了, 请用argparse
模块替代。
推荐
⭐⭐⭐
示例
# 2_getopt.py
import sys, getopt
def add(a, b):
return a+b
if __name__ == "__main__":
opts, args = getopt.getopt(sys.argv[1:], "ab", ["a", "b"])
a = int(args[0])
b = int(args[2])
print(add(a, b))
运行
python 2_getopt.py -a 1 -b 2
输出
3
optparse
optparse
是一个比getopt
模块更方便,灵活,强大的库,用于解析命令行选项。
推荐
⭐⭐⭐⭐
示例
# 3_optparse.py
from optparse import OptionParser
def add(a, b):
return a+b
if __name__ == '__main__':
parser = OptionParser()
parser.add_option("-a", "--a", default=1, help="number a")
parser.add_option("-b", "--b", default=2, help="number b")
options, args = parser.parse_args()
a = int(options.a)
b = int(options.b)
print(add(a, b))
运行
python 3_optparse.py -a 1 -b 2
输出
3
argparse👍
argparse
让编写用户友好的命令行界面变得容易。值得注意的是,argparse
是基于optparse
编写的,因此两者在用法上非常相似。
推荐
⭐⭐⭐⭐⭐
示例
# 4_argparse.py
import argparse
def add(a, b):
return a+b
if __name__=='__main__':
# 创建一个参数解析器
parser = argparse.ArgumentParser(description='argparse some integers.')
# 添加参数
parser.add_argument('-a', '--a', default=1, type=int, required=True, help='number a')
parser.add_argument('-b', '--b', default=2, type=int, required=True, help='number b')
# 参数解析
args = parser.parse_args()
# 应用实例
a = args.a
b = args.b
print(add(a, b))
运行
python 4_argparse.py -a 1 -b 2
输出
3
总结
如果参数量较小,只有一两个,推荐使用sys.argv
,比如计算圆面积的程序,只需输入一个参数半径;如果参数量较大,比如三个以上,推荐使用argparse
,比如搭建和训练深度学习模型需要传很多参数。
仓库
参考
[1] https://docs.python.org/3/library/sys.html#sys.argv
[2] https://docs.python.org/3/library/getopt.html#module-getopt
[3] https://docs.python.org/3/library/optparse.html#module-optparse
[4] https://docs.python.org/3/library/argparse.html#module-argparse
以上是关于Python命令行参数解析模块汇总的主要内容,如果未能解决你的问题,请参考以下文章