繁体   English   中英

从 s3 存储桶中读取 gzip 文件

[英]Read gzip file from s3 bucket

嘿,我正在尝试从 s3 存储桶中读取 gzip 文件,这是我的尝试:

s3client = boto3.client(
    's3',
    region_name='us-east-1'
)

bucketname = 'wind-obj'
file_to_read = '20190101_0000.gz'

fileobj = s3client.get_object(
    Bucket=bucketname,
    Key=file_to_read
    )

filedata = fileobj['Body'].read()

现在要打开 gzip 文件,我正在这样做:

gzip.open(filedata,'rb')

但它给我带来了错误:

ValueError: embedded null byte

所以我试图先解码它:

contents = filedata.decode('utf-8')

这引发了另一个错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

我已经尝试使用ISO-8859-1对其进行解码,然后它正在解码,但在打开 gzip 文件时再次出现相同的错误。

或者有没有其他方法可以从 S3 中提取数据,比如使用 URL 之类的?

gzip.open需要一个文件名或已打开的文件 object,但您直接将下载的数据传递给它。 尝试使用gzip.decompress代替:

filedata = fileobj['Body'].read()
uncompressed = gzip.decompress(filedata)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM