python bz2模块

本文介绍了Python的bz2模块用于单次压缩和解压缩的方法,包括从字符串和文件创建bz2压缩文件,并利用shutil.copyfileobj进行类文件对象复制。同时,也展示了如何查看bz2压缩文件的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单次压缩和解压缩

  • 单次压缩(bz2.compress)
In [40]: compressStr = 'use bz2 module to compress string'
In [41]: bz2.compress(compressStr,6)
Out[41]: 'BZh61AY&SY\xa5i\x9c"\x00\x00\x0f\x99\x80@\x00\x10\x00\x1e\xa7\xde\x10 \x001M2111\x08\x9ai\xa0h\xf56\xa3\xc3\x06.\x8fh\xf0S{\x83!KF{\xa4i\'\xe2\xeeH\xa7\n\x12\x14\xad3\x84@'
In [42]:
  • 单次解压缩(bz2.decompress)
In [43]: bz2.decompress('BZh61AY&SY\xa5i\x9c"\x00\x00\x0f\x99\x80@\x00\x10\x00\x1e\xa7\xde\x10 \x001M2111\x08\x9ai\xa0h\xf56\xa3\xc3\x06.\x8fh\xf0S{\x83!KF{\xa4i\'\xe2\xeeH\xa7\n\x12\x14\xad3\x84@')
Out[43]: 'use bz2 module to compress string'
In [44]:

创建一个bz2压缩文件

从字符串创建一个bz2压缩文件

#!/usr/bin/env python
import bz2
import os

linesep = os.linesep
compressStr = 'use bz2 module to compress string'
compressFilename = r'/tmp/test.bz2'

f = bz2.BZ2File(compressFilename, 'w', compresslevel=6)
f.write('%s%s' % (compressStr,linesep))

f.close()

测试

[root@control tmp]# python 1.py
[root@control tmp]# ls -l /tmp/test.bz2
-rw-r--r-- 1 root root 71 Jul 26 08:56 /tmp/test.bz2
[root@control tmp]# bzcat /tmp/test.bz2
use bz2 module to compress string
[root@control tmp]#

从一个文件创建bz2压缩文件

#!/usr/bin/env python
import bz2
import os

linesep = os.linesep
compressFilename = r'/tmp/test2.bz2'
compressFromFile = r'/etc/issue'

compressIn = open(compressFromFile, 'r')
compressOut = bz2.BZ2File(compressFilename, 'w', compresslevel=6)
compressOut.writelines(compressIn)

compressOut.close()
compressIn.close()

测试

[root@control tmp]# python 2.py
[root@control tmp]# ls -l /tmp/test2.bz2
-rw-r--r-- 1 root root 90 Jul 26 09:04 /tmp/test2.bz2
[root@control tmp]# bzcat /tmp/test2.bz2
CentOS release 6.5 (Final)
Kernel \r on an \m

[root@control tmp]#

使用shutil模块的copyfileobj方法实现类文件对象复制

#!/usr/bin/env python
import bz2
import shutil

compressFilename = r'/tmp/test3.bz2'
compressFromFile = r'/etc/issue'

compressIn = open(compressFromFile, 'r')
compressOut = bz2.BZ2File(compressFilename, 'w', compresslevel=6)

shutil.copyfileobj(compressIn, compressOut)

compressOut.close()
compressIn.close()

测试

[root@control tmp]# python 3.py
[root@control tmp]# ls -l /tmp/test3.bz2
-rw-r--r-- 1 root root 90 Jul 26 09:22 /tmp/test3.bz2
[root@control tmp]# bzcat /tmp/test3.bz2
CentOS release 6.5 (Final)
Kernel \r on an \m

[root@control tmp]#

查看bz2压缩文件的内容

#!/usr/bin/env python
import bz2

compressFilename = r'/tmp/test3.bz2'

f = bz2.BZ2File(compressFilename, 'r')

for eachLine in f:
    print eachLine,

f.close()

测试

[root@control tmp]# python 4.py
CentOS release 6.5 (Final)
Kernel \r on an \m

[root@control tmp]#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值