Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Сжатие и распаковка по алгоритму gzip↑ ⇐ ПредыдущаяСтр 19 из 19 Содержание книги
Поиск на нашем сайте
Листинг 22.1. Сохранение в архивном файле GZIP произвольных данных >>> import gzip >>> fn = "test.gz" >>> s = "Это очень, очень, очень, очень большая строка" >>> f = gzip.open(fn, mode = "wt", encoding = "utf-8") >>> f.write(s) >>> f.close() >>> f = gzip.open(fn, mode = "rt", encoding = "utf-8") >>> print(f.read()) Это очень, очень, очень, очень большая строка >>> f.close()
Листинг 22.2. Сжатие и распаковка двоичного файла по алгоритму GZIP >>> import gzip >>> fn = "image.gz" >>> f1 = open("image.jpg", "rb") >>> f2 = gzip.open(fn, "wb") >>> f2.write(f1.read()) >>> f2.close() >>> f1.close() >>> f1 = open("image_new.jpg", "wb") >>> f2 = gzip.GzipFile(filename = fn) >>> f1.write(f2.read()) >>> f1.close() >>> f2.close()
>>> import gzip >>> s = b"This is a very, very, very, very big string" >>> gzip.compress(s) b'\x1f\x8b\x08\x00\x0f4>U\x02\xff\x0b\xc9\xc8,V\x00\xa2D\x85\xb2\xd4\xa2J\x1d\x0cR!)3]\xa1\xb8\xa4(3/\x1d\x00\xbaZ)I+\x00\x00\x00'
>>> b = b'\x1f\x8b\x08\x00\x0f4>U\x02\xff\x0b\xc9\xc8,V\x00\xa2D\x85\xb2\xd4\xa2J\x1d\x0cR!)3]\xa1\xb8\xa4(3/\x1d\x00\xbaZ)I+\x00\x00\x00' >>> gzip.decompress(b) b'This is a very, very, very, very big string' Сжатие и распаковка по алгоритму BZIP2 Листинг 22.3. Сохранение в архивном файле BZIP2 произвольных данных >>> import bz2 >>> fn = "test.bz2" >>> s = "Это очень, очень, очень, очень большая строка" >>> f = bz2.open(fn, mode = "wt", encoding = "utf-8") >>> f.write(s) >>> f.close() >>> f = bz2.open(fn, mode = "rt", encoding = "utf-8") >>> print(f.read()) Это очень, очень, очень, очень большая строка >>> f.close()
Листинг 22.4. Сжатие и распаковка двоичного файла по алгоритму BZIP2 >>> import bz2 >>> fn = "doc.bz2" >>> f1 = open("doc.doc", "rb") >>> f2 = bz2.open(fn, "wb") >>> f2.write(f1.read()) >>> f2.close() >>> f1.close() >>> f1 = open("doc_new.doc", "wb") >>> f2 = bz2.BZ2File(filename = fn) >>> f1.write(f2.read()) >>> f1.close() >>> f2.close()
Листинг 22.5. Сжатие и распаковка двоичного файла по алгоритму BZIP2 по частям import bz2 fn = "doc.bz2" f1 = open("doc.doc", "rb") f2 = open(fn, "wb") comp = bz2.BZ2Compressor() data = f1.read(1024) while data: f2.write(comp.compress(data)) data = f1.read(1024) f2.write(comp.flush()) f2.close() f1.close() f1 = open("doc_new.doc", "wb") f2 = open(fn, "rb") decomp = bz2.BZ2Decompressor() data = f2.read(1024) while data: f1.write(decomp.decompress(data)) data = f2.read(1024) f1.close() f2.close() Сжатие и распаковка по алгоритму LZMA Листинг 22.6. Сохранение строки в архиве LZMA >>> import lzma >>> fn = "test.xz" >>> s = "Это очень, очень, очень, очень большая строка" >>> f = lzma.open(fn, mode = "wt", encoding = "utf-8") >>> f.write(s) >>> f.close() >>> f = lzma.LZMAFile(filename = fn) >>> str(f.read(), encoding = "utf-8") 'Это очень, очень, очень, очень большая строка' >>> f.close()
Листинг 22.7. Сжатие и распаковка двоичного файла по алгоритму LZMA по частям import lzma fn = "doc.lzma" f1 = open("doc.doc", "rb") f2 = open(fn, "wb") comp = lzma.LZMACompressor(format = lzma.FORMAT_ALONE, preset = 9) data = f1.read(1024) while data: f2.write(comp.compress(data)) data = f1.read(1024) f2.write(comp.flush()) f2.close() f1.close() f1 = open("doc_new.doc", "wb") f2 = open(fn, "rb") decomp = lzma.LZMADecompressor() data = f2.read(1024) while data: f1.write(decomp.decompress(data)) data = f2.read(1024) f1.close() f2.close()
import lzma try: f = lzma.open("test.xz") except lzma.LZMAError: print("Что-то пошло не так…") Работа с архивами ZIP >>> import zipfile >>> f = zipfile.ZipFile("test.zip", mode = "a", compression = zipfile.ZIP_DEFLATED)
>>> # Добавляем в архив файл doc.doc >>> f.write("doc.doc") >>> # Добавляем в архив файл doc2.doc под именем newdoc.doc >>> f.write("doc2.doc", arcname = "newdoc.doc")
>>> # Считываем содержимое файла text.txt >>> f2 = open("text.txt", mode = "r") >>> s = f2.read() >>> # Добавляем прочитанные данные в архив под именем textual.txt >>> f.writestr("textual.txt", s) >>> f2.close()
>>> f.close()
>>> f = zipfile.ZipFile("test.zip", mode = "r", compression = zipfile.ZIP_DEFLATED) >>> gf = f.getinfo("doc.doc") >>> gf.filename, gf.file_size, gf.compress_size ('doc.doc', 242688, 63242) >>> gf.date_time (2015, 4, 27, 14, 51, 4)
>>> for i in f.infolist(): print(i.filename, end = " ") doc.doc newdoc.doc textual.txt
>>> f.namelist() ['doc.doc', 'newdoc.doc', 'textual.txt']
>>> # Распаковываем файл doc.doc, сведения о котором хранятся >>> # в переменной gf >>> f.extract(gf) 'C:\\Python34\\doc.doc' >>> # Распаковываем файл newdoc.doc в папку c:\work >>> f.extract("newdoc.doc", path = r'c:\work') 'c:\\work\\newdoc.doc'
>>> # Распаковываем все файлы >>> f.extractall() >>> # Распаковываем лишь файлы doc.doc и newdoc.doc в папку c:\work >>> f.extractall(path = r'c:\work', members = ['doc.doc', 'newdoc.doc'])
>>> d = f.open("textual.txt") >>> f2 = open("newtext.txt", mode = "wb") >>> f2.write(d.read()) >>> f2.close()
>>> d = f.read("textual.txt") >>> f2 = open("newtext.txt", mode = "wb") >>> f2.write(d) >>> f2.close()
>>> zipfile.is_zipfile("test.zip") True >>> zipfile.is_zipfile("doc.doc") False Работа с архивами TAR >>> import tarfile >>> # Поскольку мы не можем создать сжатый файл TAR, >>> # сначала создадим несжатый… >>> f = tarfile.TarFile(name = "test.tar.gz", mode = "a") >>> # …сразу же закроем его… >>> f.close() >>> # …а потом откроем снова, указав алгоритм сжатия GZIP >>> f = tarfile.open(name = "test.tar.gz", mode = "w:gz")
>>> # Добавляем в архив файл doc.doc >>> f.add("doc.doc") >>> # Добавляем в архив файл doc2.doc под именем newdoc.doc >>> f.add("doc2.doc", arcname = "newdoc.doc") >>> # Добавляем в архив папку test с содержимым >>> f.add("test") >>> # Добавляем в архив папку test2 без содержимого >>> f.add("test2", recursive = False) >>> # Добавляем в архив папку test3, исключив все временные файлы, >>> # что могут в ней находиться >>> def except_tmp(filename): return filename.find(".tmp")!= -1 >>> f.add("test3", exclude = except_tmp)
>>> f.close()
>>> f = tarfile.open(name = "test.tar.gz") >>> # Получаем сведения о файле doc.doc >>> ti = f.getmember("doc.doc") >>> ti.name, ti.size, ti.mtime, ti.isfile(), ti.isdir() ('doc.doc', 242688, 1430135464, True, False) >>> # Получаем сведения о папке test >>> ti = f.getmember("test") >>> ti.name, ti.size, ti.mtime, ti.isfile(), ti.isdir() ('test', 0, 1430223812, False, True)
>>> for i in f.getmembers(): print(i.name, end = " ") doc.doc newdoc.doc test test/test2 test/test2/text.txt test/text.txt
>>> f.getnames() ['doc.doc', 'newdoc.doc', 'test', 'test/test2', 'test/test2/text.txt', 'test/text.txt']
>>> # Распаковываем папку test, сведения о которой хранятся >>> # в переменной ti >>> f.extract(ti) >>> # Распаковываем файл doc.doc в папку c:\work >>> f.extract("doc.doc", path = r'c:\work')
>>> # Распаковываем все файлы >>> f.extractall() >>> # Распаковываем лишь файлы doc.doc и newdoc.doc в папку c:\work >>> l = [f.getmember("doc.doc"), f.getmember("newdoc.doc")] >>> f.extractall(path = r'c:\work', members = l)
>>> d = f.extractfile("doc.doc") >>> f2 = open("doc2.doc", mode = "wb") >>> f2.write(d.read()) >>> f2.close()
>>> tarfile.is_tarfile("test.tar.gz") True >>> tarfile.is_tarfile("doc2.doc") False
|
||||
Последнее изменение этой страницы: 2016-06-23; просмотров: 338; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.200.247 (0.009 с.) |