Стандартная библиотека¶
Стандартная библиотека Python содержит огромное количество полезных модулей и является частью стандартного комплекта поставки Python. Ознакомиться со стандартной библиотекой Python очень важно, так как множество задач можно решить очень быстро, если вы знакомы с возможностями этих библиотек.
Рассмотрим некоторые наиболее часто используемые модули этой библиотеки. Детальное описание всех модулей стандартной библиотеки Python можно найти в разделе “Library Reference” документации, входящей в комплект поставки Python.
Давайте изучим несколько полезных модулей.
Примечание
Если темы в настоящей главе покажутся вам слишком сложными, вы можете её пропустить. Однако я настоятельно рекомендую вернуться к этой главе, когда вы будете чувствовать себя более уверенно с Python.
Модуль sys¶
Модуль sys содержит функциональность, характерную для системы. Так мы
видели, что список sys.argv содержит аргументы командной строки.
Предположим, нам нужно узнать версию используемой команды Python с тем, чтобы,
к примеру, убедиться в том, что мы используем как минимум версию 3. Модуль
sys предоставляет такую возможность.
>>> import sys
>>> sys.version_info
(3, 0, 0, 'beta', 2)
>>> sys.version_info[0] >= 3
True
Как это работает:
Модульsysсодержит кортежversion_info, который хранит информацию о версии. Первый элемент этого кортежа обозначает старшую версию. Мы можем использовать его, например, для того, чтобы убедиться, что программа будет выполняться только в Python 3.0:
Сохраните как versioncheck.py:
import sys, warnings
if sys.version_info[0] < 3:
warnings.warn("Для выполнения этой программы необходима как минимум \
версия Python 3.0",
RuntimeWarning)
else:
print('Нормальное продолжение')
Вывод:
$ python2.7 versioncheck.py
versioncheck.py:6: Для выполнения этой программы необходима как минимум версия Python 3.0
RuntimeWarning)
$ python3 versioncheck.py
Нормальное продолжение
Как это работает:
Мы используем один из модулей стандартной библиотеки, который называетсяwarningsи служит для отображения предупреждений пользователю. Если версия Python менее 3, мы показываем соответствующее предупреждение.
Модуль logging¶
Представьте ситуацию, когда необходимо сохранить некоторые отладочные или другие
важные сообщения где-нибудь, чтобы иметь возможность позже проверить, отработала
ли программа, как ожидалось. Как мы “сохраним где-нибудь” эти сообщения? Сделать
это можно при помощи модуля logging.
Сохраните как use_logging.py:
import os, platform, 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_file)
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s : %(levelname)s : %(message)s',
filename = logging_file,
filemode = 'w',
)
logging.debug("Начало программы")
logging.info("Какие-то действия")
logging.warning("Программа умирает")
Вывод:
$ python3 use_logging.py
Сохраняем лог в C:\Users\swaroop\test.log
Если открыть файл test.log, он будет выглядеть примерно так:
2012-10-26 16:52:41,457 : DEBUG : Начало программы
2012-10-26 16:52:41,474 : INFO : Какие-то действия
2012-10-26 16:52:41,475 : WARNING : Программа умирает
Как это работает:
Мы использовали три модуля из стандартной библиотеки: модуль
osдля взаимодействия с операционной системой, модульplatformдля получения информации о платформе (т.е. операционной системе) и модульloggingдля сохранения лога[1].Прежде всего, при помощи строки, возвращаемой функцией
platform.platform()мы проверяем, какая операционная система используется (для более подробной информации см.import platform; help(platform)). Если это Windows, то мы определяем диск, содержащий домашний каталог, путь к домашнему каталогу на нём и имя файла, в котором хотим сохранить информацию. Сложив все эти три части, мы получаем полный путь к файлу. Для других платформ нам нужно знать только путь к домашнему каталогу пользователя, и мы получим полный путь к файлу.При помощи функции
os.path.join()мы объединяем три части пути к файлу вместе. Мы используем эту функцию вместо простого объединения строк для того, чтобы гарантировать, что полный путь к файлу записан в формате, ожидаемом операционной системой.Далее мы конфигурируем модуль
loggingтаким образом, чтобы он записывал все сообщения в определённом формате в указанный файл.Наконец, мы можем выводить сообщения, предназначенные для отладки, информирования, предупреждения и даже критические сообщения. После выполнения программы можно просмотреть этот файл и узнать, что происходило в программе, хотя пользователю, запустившему программу, ничего не было показано.
Серия “Модуль недели”¶
В стандартной библиотеке можно найти ещё много полезного. Например, отладка, обработка параметров командной строки, регулярные выражения и так далее.
Лучший способ дальнейшего изучения стандартной библиотеки – читать замечательную серию Дуга Хелмана “Модуль недели” или официальную документацию Python.
Резюме¶
Мы изучили лишь некоторые возможности некоторых модулей стандартной библиотеки Python. Я настоятельно рекомендую просмотреть документацию по стандартной библиотеке Python, чтобы увидеть все доступные модули.
Далее мы обратимся к некоторым аспектам, которые сделают вашу экскурсию по Python более “завершённой”.