Chr*_*007 3 python gzip amazon-s3 amazon-web-services boto3
嘿,我正在尝试从 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()
Run Code Online (Sandbox Code Playgroud)
现在要打开 gzip 文件,我正在执行以下操作:
gzip.open(filedata,'rb')
Run Code Online (Sandbox Code Playgroud)
但它给我带来了错误:
ValueError: embedded null byte
Run Code Online (Sandbox Code Playgroud)
所以我想先解码它:
contents = filedata.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
这引发了另一个错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
Run Code Online (Sandbox Code Playgroud)
我尝试使用解码它ISO-8859-1,然后它正在解码,但在打开 gzip 文件时再次出现相同的错误。
或者有没有其他方法可以从 S3 中提取数据,比如使用 URL 之类的?
gzip.open需要一个文件名或一个已打开的文件对象,但您直接向其传递下载的数据。尝试使用gzip.decompress:
filedata = fileobj['Body'].read()
uncompressed = gzip.decompress(filedata)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3725 次 |
| 最近记录: |