English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本文实例讲述了Python实现压缩与解压gzip大文件的方法。分享给大家供大家参考,具体如下:
#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!')
También se puede encapsular simplemente en una clase:
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()
Los lectores interesados en más contenido relacionado con Python pueden ver las secciones especiales de este sitio: 'Resumen de técnicas de manejo de archivos y directorios de Python', 'Resumen de técnicas de manejo de archivos de texto de Python', 'Resumen de técnicas de manejo de URL de Python', 'Resumen de técnicas de manejo de imágenes de Python', 'Tutorial de estructuras de datos y algoritmos de Python', 'Resumen de técnicas de programación de sockets de Python', 'Resumen de técnicas de uso de funciones de Python', 'Resumen de técnicas de manejo de cadenas de Python' y 'Tutorial clásica de introducción y avanzado de Python'
Espero que lo dicho en este artículo sea útil para el diseño de programas Python de todos.
Declaración: El contenido de este artículo se obtiene de la red, pertenece a los propietarios originales, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume responsabilidades legales relacionadas. Si encuentra contenido sospechoso de copyright, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar, y proporcione pruebas relacionadas. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.