第八章:数据压缩与归档-bz2:bzip2压缩-读压缩文件

8.3.5 读压缩文件
要从之前压缩的文件读回数据,需要用读模式(‘rb’)打开文件。从read()返回的值是一个字节串。

import bz2
import io

with bz2.BZ2File('example.bz2','rb') as input:
    with io.TextIOWrapper(input,encoding='utf-8') as dec:
        print(dec.read())

这个例子读取上一节bz2_file_write.py所写的文件。BZ2File用一个TextIOWrapper包装,将所读取的字节解码为Unicode文本。
运行结果:

Contents of the example file go here.

读文件时,还可以用seek()定位,然后只读取部分数据。

import bz2
import contextlib

with bz2.BZ2File('example.bz2','rb') as input:
    print('Entire file:')
    all_data = input.read()
    print(all_data)

    expected = all_data[5:15]

    # Rewind to beginning
    input.seek(0)

    # Move ahead 5 bytes
    input.seek(5)
    print('Starting at position 5 for 10 bytes:')
    partial = input.read(10)
    print(partial)

    print()
    print(expected == partial)

seek()位置是相对未压缩数据的位置,所以调用者并不需要知道数据文件是压缩文件。这就允许将一个BZ2File实例传入一个原本接收常规未压缩文件的函数。
运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/89218101