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,比如搭建和训练深度学习模型需要传很多参数。

仓库

https://github.com/XavierJiezou/python-argument-parsing

参考

[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命令行参数解析模块汇总的主要内容,如果未能解决你的问题,请参考以下文章

Python 命令行参数解析: optparse 模块

Python笔记:命令行参数解析

python 命令行参数解析学习

python模块-optparse(解析命令行参数)

Python3中使用argparse模块解析命令行参数

Python3中使用argparse模块解析命令行参数