1. 前言
在日常编写 Python 脚本的过程中,我们经常需要结合命令行参数传入一些变量参数,使项目使用更加的灵活方便
本篇文章我将罗列出构建 Python 命令行参数的 4 种常见方式
它们分别是:
- 内置 sys.argv 模块
- 内置 argparse 模块
- 内置 getopt 模块
- 第三方依赖库 click
2. sys.argv
构建命令行参数最简单、常见的方式是利用内置的「 sys.argv 」模块
它是将参数以一个有序的列表传入,所以在使用时传参顺序必须固定
因此,这种方式适用于参数个数少且场景固定的项目中
import sys
if __name__ == '__main__':
# 获取参数列表
# 注意:sys.argv[0] 代表第一个参数,即:脚本名称「1_sys.argv.py」
# 其他参数列表
args = sys.argv[1:]
# 参数个数
args_length = len(sys.argv) if sys.argv else 0
print("排除运行主文件参数,其他参数列表为:", args)
print("参数总数:", args_length)
# 使用
# python3 1_sys.argv.py arg1 arg2
# 排除运行主文件参数,其他参数列表为: [arg1, arg1]
# 参数总数:3
需要注意的是,在脚本中通过「 sys.argv 」获取的参数列表中,第一个参数代表脚本主文件名称
3. argparse
内置的 argparse 模块可以非常轻松地编写出友好的命令行参数脚本,并且它能自动生成帮助使用手册,在用户给程序传入无效参数时能抛出清晰的错误信息
官方文档:
https://docs.python.org/zh-cn/3.10/library/argparse.html
使用它构建命令行参数包含 3 个步骤:
构建参数解析对象添加参数添加参数解析参数
3-1 构建命令行参数解析对象
import argparse
...
# 构建一个命令行参数解析对象
parser = argparse.ArgumentParser(description='命令行参数')
...
3-2 添加命令行参数
需要指出的是,--arg1 用于指定参数名称,-a1 代表 dest 目标变量值(简写)
...
# 设置3个参数
# 参数1:arg1,整型,非必须传入参数
# 参数2:arg2,字符串,非必须传入参数,包含默认值「xag」
# 参数3:arg3,字符串类型,必须传入的参数
parser.add_argument('--arg1', '-a1', type=int, help='参数1,非必须参数')
parser.add_argument('--arg2', '-a2', type=str, help='参数2,非必须参数,包含默认值', default='xag')
parser.add_argument('--arg3', '-a3', type=