标准库
Python 标准库包含大量有用的模块,并且是每个标准 Python 安装的一部分。熟悉 Python 标准库非常重要,因为如果你了解这些库能做的事情的范围,许多问题都可以快速解决。
由于 Auto 转译为 Python,你可以使用 use 语句导入 Python 标准库中的任何模块。这意味着整个 Python 标准库都可以在你的 Auto 程序中使用。
我们将在本章中探索一些常用的模块。你可以在 Python 安装附带的文档的'库参考'部分中找到 Python 标准库所有模块的完整详细信息。
注意:
如果你觉得本章的主题太高级,可以跳过本章。但是,强烈建议当你对编程更加熟悉时再回到本章。
sys 模块
sys 模块包含系统特定的功能。我们已经看到 sys.argv 列表包含命令行参数。
假设我们想检查运行 Auto 程序的 Python 软件的版本——sys 模块可以为我们提供这些信息。
将此程序保存为 sys_module.auto:
输出:
$ auto run sys_module.auto
Python version: 3.12.0 (main, Oct 2 2024, 08:00:00)
Version info: sys.version_info(major=3, minor=12, micro=0, releaselevel='final', serial=0)
You are running Python 3 or later.工作原理
sys 模块有一个 version_info 元组,为我们提供版本信息。第一个条目是主版本号。我们可以提取这个信息来使用它。
我们使用 f-字符串打印完整的版本字符串(sys.version)和版本信息元组(sys.version_info)。然后我们使用 if 语句检查主版本号是否为 3 或更高,并打印相应的消息。
Python 程序员注意:
Auto 中的
use sys语句在 Python 中转换为import sys。sys.version_info属性和sys.version属性在两种语言中的工作方式完全相同,因为 Auto 转译为 Python。
logging 模块
如果你想要将一些调试消息或重要消息存储在某个地方,以便你可以检查程序是否按预期运行,该怎么办?如何将这些消息"存储在某个地方"?这可以通过使用 logging 模块来实现。
将此程序保存为 logging_example.auto:
输出:
$ auto run logging_example.auto
Logging to: /Users/swa/test.log
Check the log file for details.
$ cat /Users/swa/test.log
2024-03-29 09:27:36,660 : DEBUG : Start of the program
2024-03-29 09:27:36,660 : INFO : Doing something
2024-03-29 09:27:36,660 : WARNING : Dying now工作原理
我们使用了标准库中的三个模块——用于与操作系统交互的 os 模块、用于获取平台(即操作系统)信息的 platform 模块,以及用于记录信息的 logging 模块。
首先,我们通过检查 platform.platform() 返回的字符串来确定我们使用的操作系统。如果是 Windows,我们找出主驱动器、主文件夹以及我们想要存储信息的文件名。将这些部分组合在一起,我们得到了文件的完整位置。对于其他平台,我们只需要知道用户的主文件夹,就可以得到文件的完整位置。
我们使用 os.path.join() 函数将这些位置的各个部分组合在一起。使用特殊函数而不是简单地将字符串相加的原因是,这个函数会确保完整位置符合操作系统预期的格式。
我们配置 logging 模块,将所有消息以特定格式写入我们指定的文件。
最后,我们可以放置用于调试、信息、警告甚至关键消息的消息。程序运行完成后,我们可以检查这个文件,了解程序中发生了什么,即使没有向运行程序的用户显示任何信息。
Python 程序员注意:
Auto 中的
use os、use platform和use logging语句在 Python 中分别转换为import os、import platform和import logging。所有日志记录函数的工作方式完全相同,因为 Auto 转译为 Python。
每周模块推荐
标准库中还有更多值得探索的内容,例如调试、处理命令行选项、正则表达式等等。
进一步探索标准库的最佳方式是阅读 Doug Hellmann 优秀的 Python Module of the Week 系列(也可作为书籍购买)以及 Python 文档。
小结
我们探索了 Python 标准库中许多模块的一些功能。强烈建议浏览 Python 标准库文档,以了解所有可用的模块。
由于 Auto 转译为 Python,通过 use 语句,整个 Python 标准库都在你的指尖。这是 Auto 最大的优势之一——你可以获得简洁、现代的语法,同时完全访问 Python 丰富的生态系统。