簡體   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