最近处理线上日志,日志文件刚好是经过压缩的,且是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 gzipimport osbuf_size = 1024 * 8def 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()
再次执行就能看到大文件,正常解压了
关键词:
gzip文件怎么打开(gzip文件怎么解压) 全球热推荐
2023-05-17中国重汽(000951):5月16日北向资金增持11.44万股
2023-05-17世界观点:流星雨又来临小说
2023-05-17杭州圆弧过滤器材有限公司_关于杭州圆弧过滤器材有限公司概略 世界讯息
2023-05-17男子偷偷用打火机点燃女子裙边,监控曝光惊险一幕
2023-05-16长三角一体化示范区:到2035年万元GDP用水量控制在20立方米以下
2023-05-16运用监督的四种形态是指哪四种_四种形态是指哪四种|环球头条
2023-05-16中日防长首次使用中日防务部门海空联络机制直通电话进行通话_今亮点
2023-05-16当前消息!做nt检查需要注意些什么_做nt检查需要注意什么
2023-05-16腾讯音乐娱乐集团2023Q1业绩高质量增长,持续助推中国音乐全球影响力提升 焦点精选
2023-05-16gzip文件怎么打开(gzip文件怎么解压) 全球热推荐
2023-05-17中国重汽(000951):5月16日北向资金增持11.44万股
2023-05-17世界观点:流星雨又来临小说
2023-05-17杭州圆弧过滤器材有限公司_关于杭州圆弧过滤器材有限公司概略 世界讯息
2023-05-17男子偷偷用打火机点燃女子裙边,监控曝光惊险一幕
2023-05-16长三角一体化示范区:到2035年万元GDP用水量控制在20立方米以下
2023-05-16运用监督的四种形态是指哪四种_四种形态是指哪四种|环球头条
2023-05-16中日防长首次使用中日防务部门海空联络机制直通电话进行通话_今亮点
2023-05-16当前消息!做nt检查需要注意些什么_做nt检查需要注意什么
2023-05-16腾讯音乐娱乐集团2023Q1业绩高质量增长,持续助推中国音乐全球影响力提升 焦点精选
2023-05-16Copyright 2015-2022 大众超市网版权所有 备案号:豫ICP备20014643号-14 联系邮箱: 905 14 41 07@qq.com