English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Этот пример рассказывает о методах сжатия и распаковки больших файлов gzip с помощью Python. Делимся этим с вами для вашего рассмотрения, вот так:
#encoding=utf-8 #author: walker #date: 2015-10-26 #summary: Тестирование сжатия/распаковки файлов gzip import gzip BufSize = 1024*8 def gZipFile(src, dst): fin = open(src, 'rb') fout = gzip.open(dst, 'wb') in2out(fin, fout) def gunZipFile(gzFile, dst): fin = gzip.open(gzFile, 'rb') fout = open(dst, 'wb') in2out(fin, fout) def in2out(fin, fout): while True: buf = fin.read(BufSize) if len(buf) < 1: break fout.write(buf) fin.close() fout.close() if __name__ == '__main__': src = r'D:\tmp\src.txt' dst = r'D:\tmp\src.txt.gz' ori = r'D:\tmp\ori.txt' gZipFile(src, dst) print('gZipFile over!') gunZipFile(dst, ori) print('gunZipFile over!')
также можно просто упаковать в класс:
class GZipTool: def __init__(self, bufSize): self.bufSize = bufSize self.fin = None self.fout = None def compress(self, src, dst): self.fin = open(src, 'rb') self.fout = gzip.open(dst, 'wb') self.__in2out() def decompress(self, gzFile, dst): self.fin = gzip.open(gzFile, 'rb') self.fout = open(dst, 'wb') self.__in2out() def __in2out(self,): while True: buf = self.fin.read(self.bufSize) if len(buf) < 1: break self.fout.write(buf) self.fin.close() self.fout.close()
Для тех, кто интересуется дополнительной информацией о Python, рекомендуется посетить темы на нашем сайте: «Сборник навыков работы с файлами и каталогами в Python», «Сборник навыков работы с текстовыми файлами в Python», «Сборник навыков работы с URL в Python», «Сборник навыков работы с изображениями в Python», «Учебник по структурам данных и алгоритмам в Python», «Сборник навыков работы с Socket в Python», «Сборник навыков использования функций в Python», «Сборник навыков работы со строками в Python» и «Классическое руководство по入门у и продвинутому изучению Python»
Надеюсь, что это руководство поможет вам в разработке Python-программ.
Заявление: содержание этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, самостоятельно загружен, сайт не обладает правами собственности, не прошел редактирование и не несет ответственности за соответствующие юридические последствия. Если вы обнаружите подозрительное содержание, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @), и предоставьте соответствующие доказательства. При обнаружении факта нарушения авторских прав сайт незамедлительно удаляет подозрительное содержимое.