python压缩/解压gzip 大文件

liftword3个月前 (03-03)技术文章34

最近处理线上日志,日志文件刚好是经过压缩的,且是gz后缀。自己便采用gzip库来处理。

示例如下:

创建gzip文件

# -- coding: utf-8 --
import gzip

"""
创建gzip文件
"""
content = """
侠客行
李白 〔唐代〕

赵客缦胡缨,吴钩霜雪明。
银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。
事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。
将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。
眼花耳热后,意气素霓生。
救赵挥金槌,邯郸先震惊。
千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。
谁能书阁下,白首太玄经。
"""
f = gzip.open('xiakexing.txt.gz', 'wb')
f.write(str.encode(content))
f.close()



解压gzip文件

# -- coding: utf-8 --
import gzip

"""
解压gzip文件
"""
f = gzip.open('xiakexing.txt.gz', 'rb')
file_content = f.read().decode('utf-8')
f.close()

print(file_content)



压缩现有gzip文件

# -- coding: utf-8 --
import gzip

"""
gzip压缩现有文件
"""
f_in = open('file.txt', 'rb')
f_out = gzip.open('file.txt.gz', 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()


处理大文件

真正在生产可能会存在比较大的文件,直接解压肯定是不行了。可能会报错,例如:



所以可以采用循环处理,加入一定的缓冲机制,例如:

# -- coding: utf-8 --
import gzip
import os

buf_size = 1024 * 8


def gzip_file(src, dst):
    fin = open(src, 'rb')
    fout = gzip.open(dst, 'wb')
    in2out(fin, fout)


def gunzip_file(gz_file, dst):
    fin = gzip.open(gz_file, 'rb')
    fout = open(dst, 'wb')
    in2out(fin, fout)


def in2out(fin, fout):
    while True:
        buf = fin.read(buf_size)
        if len(buf) < 1:
            break
        fout.write(buf)

    fin.close()
    fout.close()


再次执行就能看到大文件,正常解压了

相关文章

Python全能压缩:ZIP的压缩、解压、文件筛选与删除,一键搞定!

引言:这个方法实现了文件压缩与解压的常见操作,涵盖内容如下:1、从文件夹创建 ZIP 文件 2、从文件夹创建 ZIP 文件(筛选特定文件) 3、解压 ZIP 文件中的所有内容 4、解压 ZIP...

python散装笔记——131: 解压文件

为了提取或解压缩tarball(tar归档文件)、ZIP文件或gzip文件,Python分别提供了tarfile、zipfile和gzip模块。Python的tarfile模块提供了TarFile.e...

小明用Python暴力破解压缩文件zip密码,省了250块钱

那天晚上小明和你一样在某个小网站上搜寻某些私密的学习资料突然看到论坛有人提供了一个非常牛逼的资源小明怀着激动的心情下载了下来他怀着激动的心情打开了这个压缩文件看到就只有这么一个 txt 小明就是一顿双...

使用 Python 在 Excel 中插入、压缩、替换、提取和删除图像

Excel 不仅仅是一个数字和公式的工具;它还提供了用于处理图像的强大功能。无论您是创建报告、演示文稿还是数据可视化,合并图像都可以大大提高 Excel 项目的整体影响力和专业性。在 Excel 中...

用 Python 库 PySimpleGUI 制作自动化办公小软件

来源丨Python自动化办公社区链接https://blog.csdn.net/lys_828/article/details/11123856Python 在运维和办公自动化中扮演着重要的角色,P...

Python 文件处理指南

在编程 里,文件处理是非常重要的一部分。无论是数据存储、文档管理,还是日志记录,都离不开对文件的操作。而Python作为一个强大的脚本语言,在文件处理方面提供了丰富的功能和灵活性。本文将从基础到应用,...