2.14. 标准库

未匹配的标注

标准库

Python 标准库包含超大量的实用模块,同时其实是每个 Python 标准安装的一部分。熟悉 Python 标准库是非常重要的,因为如果你了解这些库可以完成事情的范围,很多问题可以快速解决。

我们将探索库中一些很常用的模块。你可以在 Python 安装所带的文档的 「代码库参考」章节 中找到 Python 标准库所有模块的完整细节。

接下来让我们一起探索一些有用的模块。

注意:如果你认为本章内容太复杂,你可以跳过这一章。但是,我非常推荐你在能更加舒适地使用 Python 进行编程时重新回到这章。

sys 模块

sys 模块包含特定系统的功能。我们已经见过 sys.argv 列表包含了命令行参数。

假设我们想要检查当前使用的 Python 版本, sys 模块给出我们以下信息。

>>> import sys
>>> sys.version_info
sys.version_info(major=3, minor=6, micro=0, releaselevel='final', serial=0)
>>> sys.version_info.major == 3
True

工作原理

sys 模块有一个给出版本信息的 version_info 元组。 第一个条目是主要版本。我们可以提取这些信息来使用它。

logging 模块

如果你希望将一些调试消息或重要消息存储在某个地方,以便你可以检查你的程序是否按照预期运行,该怎么办?你怎样将这些信息「存在某地」,这可以用 logging 模块收集。

保存为 stdlib_logging.py

import os
import platform
import logging

if platform.platform().startswith('Windows'):
    logging_file = os.path.join(os.getenv('HOMEDRIVE'),
                                os.getenv('HOMEPATH'),
                                'test.log')
else:
    logging_file = os.path.join(os.getenv('HOME'),
                                'test.log')

print("Logging to", logging_file)

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s : %(levelname)s : %(message)s',
    filename=logging_file,
    filemode='w',
)

logging.debug("Start of the program")
logging.info("Doing something")
logging.warning("Dying now")

输出:

$ python stdlib_logging.py
Logging to /Users/swa/test.log

$ cat /Users/swa/test.log
2014-03-29 09:27:36,660 : DEBUG : Start of the program
2014-03-29 09:27:36,660 : INFO : Doing something
2014-03-29 09:27:36,660 : WARNING : Dying now

在命令行中使用 cat 命令读取 'test.log' 文件的输出。如果 cat 不可用,你可以在文本编辑器中打开 test.log

工作原理

我们使用标准库中的三个模块——与操作系统进行交互的 os 模块, 与获得比如操作系统等平台信息的 platform 模块以及处理日志(log)信息的 logging 模块。

首先,我们查看 platform.platform() (查看 import platform; help(platform) 获得更多信息)返回的字符串来检查我们所用操作系统类型。如果是Windows,我们找到要存储信息的主驱动器、用户根文件夹和文件名。把这三个部分放在一起,我们就得到了文件的完整位置。对于其他平台,我们只需要知道用户的主文件夹,就可以得到文件的完整位置。

我们使用 os.path.join() 函数组合路径的三个部分。 使用特殊函数而不仅仅是将字符串拼接到一起的原因是,这个函数将确保完整位置与操作系统预期的格式相同。注意:我们在这里使用的 join() 方法是 os 模块的一部分,它与我们在本书的其他地方使用的字符串方法 join() 不同。

我们可以配置 logging 模块将所有信息以特定格式写入指定文件。

最后,我们可以放置调试、信息、警告甚至严重问题的消息。一旦程序运行,我们可以检查这个文件,我们将知道在程序中发生了什么,即使没有信息显示给运行程序的用户。

Module of the Week 系列

标准库中还有很多需要探索的地方,例如 调试, 处理命令行选项, 正则表达式 以及更多.

进一步探索标准库的最佳方法是 Doug Hellmann 的 Python Module of the Week 系列(图书版本)以及阅读 Python 官方文档

译者注:《Python Module of the Week》中文版请见 《Python 3 标准库实例教程》

小结

我们已经探索了 Python 标准库中很多模块的一些功能。强烈推荐速浏览 Python 标准库文档 以获得所有可用的模块。

接下来,我们将介绍 Python 的各个方面,使我们的 Python 之旅更加“完整”。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/byte-of-python/...

译文地址:https://learnku.com/docs/byte-of-python/...

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~