Стандартная библиотека¶
Стандартная библиотека Python содержит огромное количество полезных модулей и является частью стандартного комплекта поставки Python. Ознакомиться со стандартной библиотекой Python очень важно, так как множество задач можно решить очень быстро, если вы знакомы с возможностями этих библиотек.
Рассмотрим некоторые наиболее часто используемые модули этой библиотеки. Детальное описание всех модулей стандартной библиотеки Python можно найти в разделе "Library Reference" документации, входящей в комплект поставки Python.
Давайте изучим несколько полезных модулей.
Примечание
Если темы в настоящей главе покажутся вам слишком сложными, вы можете её пропустить. Однако я настоятельно рекомендую вернуться к этой главе, когда вы будете чувствовать себя более уверенно с Python.
Модуль sys¶
Модуль sys
содержит функциональность, характерную для системы. Так мы видели, что список sys.argv
содержит аргументы командной строки.
Предположим, нам нужно узнать версию используемой команды Python с тем, чтобы, к примеру, убедиться в том, что мы используем как минимум версию 3. Модуль sys
предоставляет такую возможность.
1 2 3 4 5 |
|
Как это работает:
Модуль sys
содержит кортеж version_info
, который хранит информацию о версии. Первый элемент этого кортежа обозначает старшую версию. Мы можем использовать его, например, для того, чтобы убедиться, что программа будет выполняться только в Python 3.0:
Сохраните как versioncheck.py
:
1 2 3 4 5 6 7 |
|
Вывод:
1 2 3 4 5 6 |
|
Как это работает:
Мы используем один из модулей стандартной библиотеки, который называется warnings
и служит для отображения предупреждений пользователю. Если версия Python менее 3, мы показываем соответствующее предупреждение.
Модуль logging¶
Представьте ситуацию, когда необходимо сохранить некоторые отладочные или другие важные сообщения где-нибудь, чтобы иметь возможность позже проверить, отработала ли программа, как ожидалось. Как мы "сохраним где-нибудь" эти сообщения? Сделать это можно при помощи модуля logging
.
Сохраните как use_logging.py
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Вывод:
1 2 |
|
Если открыть файл test.log
, он будет выглядеть примерно так:
1 2 3 |
|
Как это работает:
Мы использовали три модуля из стандартной библиотеки: модуль os
для взаимодействия с операционной системой, модуль platform
для получения информации о платформе (т.е. операционной системе) и модуль logging
для сохранения лога1.
Прежде всего, при помощи строки, возвращаемой функцией platform.platform()
мы проверяем, какая операционная система используется (для более подробной информации см. import platform; help(platform)
). Если это Windows, то мы определяем диск, содержащий домашний каталог, путь к домашнему каталогу на нём и имя файла, в котором хотим сохранить информацию. Сложив все эти три части, мы получаем полный путь к файлу. Для других платформ нам нужно знать только путь к домашнему каталогу пользователя, и мы получим полный путь к файлу.
При помощи функции os.path.join()
мы объединяем три части пути к файлу вместе. Мы используем эту функцию вместо простого объединения строк для того, чтобы гарантировать, что полный путь к файлу записан в формате, ожидаемом операционной системой.
Далее мы конфигурируем модуль logging
таким образом, чтобы он записывал все сообщения в определённом формате в указанный файл.
Наконец, мы можем выводить сообщения, предназначенные для отладки, информирования, предупреждения и даже критические сообщения. После выполнения программы можно просмотреть этот файл и узнать, что происходило в программе, хотя пользователю, запустившему программу, ничего не было показано.
Модули urllib и json¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
Резюме¶
Мы изучили лишь некоторые возможности некоторых модулей стандартной библиотеки Python. Я настоятельно рекомендую просмотреть документацию по стандартной библиотеке Python, чтобы увидеть все доступные модули.
Далее мы обратимся к некоторым аспектам, которые сделают вашу экскурсию по Python более "завершённой".
-
log — англ. "журнал", "вести журнал" (прим.перев.) ↩