Python 中的 argparse2025年3月17日 | 阅读 8 分钟 在本文中,我们将学习 Python 中的 argparse 模块。我们将探讨它的工作原理和功能。对于基础开发人员、工程师和计算机科学家来说,这是一个非常重要的主题。正如我们所熟知的,Python 以其丰富的库而闻名。如果开发人员为命令行编写脚本,他们还需要传递命令行参数,这些参数我们可以使用 **argparse** 库来创建。 在本文中,我们将探讨与 argparse 相关的以下主题。
让我们来理解 argparse 是什么以及如何实现它。 什么是命令行界面?命令行界面也称为 CLI,它与命令行脚本进行交互。 Python 提供了许多允许我们使用 CLI 的库,但在当前情况下,Python argparse 是最合适的库。 命令行界面如何工作?在我们深入研究这个主题之前,我们需要了解命令行界面是如何工作的?所以打开命令行终端并输入 **ls 命令** 来获取系统中所有可用文件的列表。 输出 face.png Favorites file1.txt file2.txt flower.jpg forest.jpg Gow-0.8.0.exe gradients.jpg hadoop-2.8.0 hadoop-2.8.0.tar.gz hello_fullstack highway.mp4 IBA_IOAPDATA innocentcat IntelGraphicsProfiles international-cricket-players-data.zip Iris.csv iris.zip java_error_in_pycharm_6408.log java_error_in_pycharm_6684.log jtp_logo.png linear_reg linear_reg.zip Links Local Settings main_image.jpg mario.png metastore_db MicrosoftEdgeBackups Music My Documents mycus 9c409ba1dd3f}.TMContainer00000000000000000001.regtrans-ms NTUSER.DAT{42939bbc-edb6-11ea-9c24-9c409ba1dd3f}.TMContainer00000000000000000002.regtrans-ms ntuser.ini PySpark DataFrame.ipynb PySpark RDD.ipynb PySpark SQL.ipynb PySpark UDF.ipynb tesseract-3.02.02-win32-lib-include-dirs tesseract-3.02.02-win32-lib-include-dirs.zip 如上输出所示,ls 命令返回当前目录中所有可用文件的列表。 现在,我们将通过在命令行中添加选项 -l 来运行 **ls** 命令。 输出 total 717704 drw-rw-rw- 2 DEVANSH SHARMA 0 0 2020-04-07 13:25 __pycache__ dr--r--r-- 2 DEVANSH SHARMA 0 0 2020-09-03 13:42 3D Objects drw-rw-rw- 2 DEVANSH SHARMA 0 0 2014-01-03 15:37 8235702-a50f7c449c41b6dc8eb87d8d393eeff62121b392 drw-rw-rw- 20 DEVANSH SHARMA 0 32768 2020-12-07 16:20 Anaconda3 drw-rw-rw- 5 DEVANSH SHARMA 0 0 2020-09-03 13:02 AppData drw-rw-rw- 2 DEVANSH SHARMA 0 8192 2021-02-11 21:39 Application Data -rw-rw-rw- 1 DEVANSH SHARMA 0 224 2019-11-13 14:38 array.mat -rw-rw-rw- 1 DEVANSH SHARMA 0 69548 2019-12-03 14:18 ballon.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 69548 2019-12-03 14:20 baloon.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 1857 2019-10-15 12:16 binary.png -rw-rw-rw- 1 DEVANSH SHARMA 0 5 2020-04-01 16:46 binfile.bin -rw-rw-rw- 1 DEVANSH SHARMA 0 13911 2019-10-16 11:52 blob.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 244879 2019-10-14 14:19 book1.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 10064 2020-04-07 16:35 calculation.py -rw-rw-rw- 1 DEVANSH SHARMA 0 23073 2019-12-06 15:30 calibresult.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 336 2019-11-29 15:11 cat.jpeg -rw-rw-rw- 1 DEVANSH SHARMA 0 0 2019-12-05 12:34 cat.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 13001 2019-10-13 17:22 cat_16x9.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 249726 2019-10-13 15:02 cat1.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 5633 2019-12-04 11:16 coin.jpg -rw-rw-rw- 1 DEVANSH SHARMA 0 8652 2019-12-04 11:23 coin1.png -rw-rw-rw- 1 DEVANSH SHARMA 0 59918 2020-03-02 11:22 comic.png dr--r--r-- 2 DEVANSH SHARMA 0 0 2020-09-03 13:42 Contacts Python 中的 argparse 是什么?Python argparse 是一个命令行解析模块,建议用于处理命令行参数。该模块于 2011 年 2 月 20 日作为 Python 标准库的一部分发布。 它类似于 **getopt 模块**,但使用起来稍微困难一些,并且需要更多的代码行来完成相同的任务。但是,argparse 模块是 **Python getopt** 和 **optparse 模块** 的更好替代品。它提供了一些重要的功能,如下所示。
如何实现 argparse 库来创建命令行界面?让我们看以下简单示例来理解 Python 中 argparse 模块的工作原理。 **示例 -** 在以下示例中,我们创建一个简单的 Python 程序,使用 **argparse** 模块执行加法运算。我们将通过命令行界面传递参数。 我们导入了 argparse 模块,并创建了一个简单的解析器,将在整个程序中使用。我们调用了 **add_argument()** 方法并传递了两个参数 - **num1 和 help**。我们将上述代码保存在名为 **_code.py_** 的文件中。 要运行此程序,我们打开命令行界面并运行上述文件。 命令 当我们按下 Enter 键时,它将显示以下输出。 输出 usage: code.py [-h] num1 num2 operation code.py: error: the following arguments are required: num1, num2, operation 正如我们所见,它显示错误,因为我们没有传递必需的参数。 现在,我们将传递可选参数 - h,它基本上用于帮助。 命令 它将显示以下输出。 usage: code.py [-h] num1 num2 operation positional arguments: num1 first number num2 second number operation operation optional arguments: -h, --help show this help message and exit 我们获得了我们在 Python 程序中定义的所有参数列表。现在,我们将通过添加以下操作来打印这两个参数和操作。当我们执行 **.parse_args()** 时,我们得到一个 Namespace 对象,其中包含从命令行接收的每个输入参数的简单属性。 我们使用 args 变量将参数打印到控制台。默认情况下,它将输入视为字符串,因此我们需要将其转换为整数。 为了将这两个数字相加,我们在代码中定义了加法运算。 C:\Users\DEVANSH SHARMA\PycharmProjects\Elasticsearch>python code.py 20 30 add 20 30 add The Result is : 50 示例 - 1 使用 argparse 的简单计算器程序 输出 ![]() 命令行界面的参数类型我们可以向命令行界面添加两种类型的参数。
让我们来理解这两个参数。 **位置参数 -** 位置参数是我们用于操作的命令行参数类型。我们将参数传递给命令并执行某些操作。它们的位置由其功能定义。因此,它们被称为位置参数。 默认情况下,位置参数被视为字符串,但我们可以将其转换为其他数据类型。 在前面的示例中,我们使用位置参数执行了两个数字之间的加法运算。 让我们来理解以下代码。 示例 - 1 输出 ![]() 我们传递了 15,它返回 1515,因为 argparse 将其视为字符串。我们可以使用 type 属性来纠正这一点。 示例 - 输出 ![]() 现在,我们得到了期望的结果。 **可选参数 -** 可选参数不是必需的。如果我们不将它们传递给脚本,我们不会收到错误。这些类型的参数以 - 单虚线或 "--" 双虚线前缀开头。我们需要调用 **.add_parse()** 来传递可选参数。 让我们理解下面的例子。 示例 - 当我们不传递任何参数而运行上述代码时,它将显示以下输出。 输出 ![]() 正如我们在上面的代码中看到的,我们运行了脚本而没有传递任何可选参数,它返回 **None** 而不是返回错误。对于可选参数,帮助消息和数据类型与位置参数相同。 Python argparse 位置参数有时,我们需要在执行时强制将参数传递给脚本。让我们看一个未传递参数的示例。 示例 - 当我们使用不同的参数运行上述代码时,它将显示以下参数。 输出 ![]() 如果未在命令行终端中传递参数,我们可以显示错误。 Python argparse 位置参数默认值我们可以使用 argparse 模块为变量或参数提供默认值。在前面的示例中,当未提供位置参数值时,它是空的。让我们来理解以下示例。 示例 - 输出 ![]() 为可选参数使用短名称传递许多可选参数可能会使我们的 Python 脚本变长。因此,我们也可以为参数分配短名称。我们可以为参数指定缩写名称;这将帮助我们保持 Python 脚本的简洁。 让我们理解下面的例子。 示例 - 输出 C:\Users\DEVANSH SHARMA\PycharmProjects\Elasticsearch>python code.py -w Devansh Technical Writer. 在上面的代码中,我们为两个可选参数都分配了短名称。我们可以使用其短名称来访问它。 将可选参数和位置参数与 argparse 结合使用我们可以使用 argparse 如下方式组合可选参数和位置参数。让我们来理解以下示例。 示例 - 输出 C:\Users\DEVANSH SHARMA\PycharmProjects\Elasticsearch>python code.py Javatpoint -w Devansh You made it! Technical Writer. 我们将两种类型的参数都传递给了命令行,并获得了上述输出。 结论到目前为止,我们已经讨论了 argparse Python 模块的所有重要概念。我们已经学习了如何创建它们以及如何通过命令行界面使用它们。我们还学习了 argparse 模块是什么,以及为什么它对于编写 Python 中的命令行脚本很重要。 该模块有助于我们创建自解释型程序,并为用户提供与我们的应用程序交互的手段。 下一主题Python tqdm 模块 |
我们请求您订阅我们的新闻通讯以获取最新更新。