Python 命令行参数详解
0. 命令行参数
通常,对于大型项目程序而言,执行程序的一个必要的步骤是正确处理命令行参数,这些命令行参数是提供给包含某种参数化信息的程序或脚本的参数。例如,在计算机视觉项目中,图像和不同类型的文件通常作为命令行参数传递给脚本,用于使程序可以处理不同图片或者不同类型文件。
命令行参数是参数化程序执行的一种常见且简单的方法,下面主要介绍三种常见的获取和解析命令行参数的方法。
1. sys.argv
为了处理命令行参数,Python 中内置了 sys.argv
模块,通过模块中的 sys.argv
就可以访问到所有的命令行参数,它的返回值是包含所有命令行参数的列表 (list)。当程序执行时,Python 从命令行获取所有值并将它们存储在 sys.argv 列表中。列表的第一个元素 sys.argv[0]
是脚本的完整路径(或脚本名称——取决于具体操作系统)。列表的第二个元素是脚本的第一个命令行参数,即 sys.argv[1]
,依此类推。这可以通过下图中清晰的看出,其中 script_1.py
脚本使用两个参数执行:
接下来,让我们看看 sys.argv
是如何工作的,首先编写 scripy_1.py
脚本:
import sys
print("正在运行的脚本名称: '{}'".format(sys.argv[0]))
print("脚本的参数数量: '{}'".format(len(sys.argv)))
print("脚本的参数: '{}'".format(str(sys.argv)))
如果我们不使用任何参数执行这个脚本:
python script_1.py
将会看到如下信息:
正在运行的脚本名称: 'script_1.py'
脚本的参数数量: '1'
脚本的参数: '['script_1.py']'
如果我们使用多个参数执行此脚本:
python script_1.py OpenCV -i test.png
将得到以下信息:
正在运行的脚本名称: 'script_1.py'
脚本的参数数量: '4'
脚本的参数: '['script_1.py'