import boto3
import io
import bz2
s3 = boto3.resource('s3')
s3_object = s3.Object("bucket-name", "path/file.bz2")
f_bz2 = s3_object.get(Range=f"bytes=0-100000")["Body"].read()
io_bz2 = io.BytesIO(f_bz2)
lines = []
with bz2.BZ2File(io_bz2, "r") as f:
while True:
lines.append(f.readline())
Размер блока сжатия для bzip2 составляет от 100 до 900 КБ. Код выше предполагает 100 КБ.
В конце выдается исключение:
EOFError: Compressed file ended before the end-of-stream marker was reached