Генераторы словарей и модули Рython
Функции в языке Python Функции в языке PythonВсе функции в языке Python возвращают какое-либо значение, хотя вполне возможно (и часто так и делается) просто игнорировать это значение. Возвращаемое значение может быть единственным значением или кортежем значений,...
Реализация генераторов Реализация генераторовМы рассмотрели коллекции-последовательности, tuple, collections, na-medtuple и list, поддерживающие, как и строки, возможность извлечения срезов. Также было рассмотрено использование оператора распаковывания...
Парсинг документов XML Парсинг документов XMLXML: Для парсинга документов XML широко используются два основных подхода. Один из них основан на анализе DOM (Document Object Model -объектная модель документа), а другой - на использовании SAX (Simple API for XML - упрощенный...
Копирование коллекций Копирование коллекцийКопирование коллекций: Поскольку в языке Python повсюду используются ссылки на объекты, когда выполняется оператор присваивания (=), никакого копирования данных на самом деле не происходит. Если справа от оператора находится литерал,...
Модуль heapq
Пример: модуль tarfile: В большинстве версий Windows отсутствует встроенная поддержка работы с форматом Лаг, который очень широко используется в системах UNIX. Этот недостаток легко можно ликвидировать с помощью модуля tarf ile из стандартной библиотеки Python, который способен создавать и распаковывать архивы Лаг и .tar.gz (которые называют тарболлами), а при наличии дополнительных библиотек еще и архивы Лаг.Ьг2.

Ниже приводятся ключевые выдержки из программы ип-tar.py, способной распаковывать тарболлы средствами модуля tarf ile. Модуль bz2 используется для работы с форматом сжатия bzip2, но операция импортирования будет терпеть неудачу, если интерпретатор Python был собран без доступа к библиотеке bzip2. (Версии Python для Windows всегда собираются со встроенной поддержкой сжатия bzip2, поэтому отсутствовать она может только в некоторых сборках для UNIX.)

Здесь учитывается возможность того, что модуль может быть недоступен, именно поэтому используется блок try ... except и логическая переменная, к которой можно будет обратиться позже (хотя здесь мы не будем приводить программный код, который обращается к ней). Любое имя файла в тарболле, начинающееся с указанных префиксов, считается подозрительным - в именах файлов в тарболле не должны использоваться абсолютные пути, поскольку это влечет за собой риск перезаписи системных файлов; поэтому в качестве предварительной меры мы не будем распаковывать файлы, имена которых начинаются с указанных префиксов.

Каждый файл в тарболле называется членом. Функция tarf ile. getmem-bers возвращает список объектов tarf ile. Та г Info, по одному для каждого члена. Имена файлов членов, включая пути, хранятся в атрибуте tarf ile. Tarlnfo. name. Если имя начинается с одного из подозрительных префиксов или содержит .. в пути, программа выводит сообщение об ошибке; в противном случае вызывается функция tarfile.extract , сохраняющая член на диск.
Навигация: 1 2 3 4
 
 
© Copyright