【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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值