Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Сжатие и распаковка по алгоритму gzipСодержание книги
Поиск на нашем сайте Листинг 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; просмотров: 436; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.005 с.) |