#python #amazon-web-services #amazon-s3 #encoding #decoding
Вопрос:
Я пытаюсь получить CSV-файл из корзины Amazon S3, как это:
s3 = boto3.client('s3')
obj = s3.get_object(Bucket='BUCKET_NAME', Key='FILE_NAME')
data = obj['Body'].read().decode('utf-8').splitlines()
Но вот что я получаю:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x94 in position 10: invalid start byte
Я подумал, что неправильно понял кодировку файла, поэтому побежал file FILE_NAME.csv
и получил UTF-8. Я также пробовал латынь-1 и некоторые другие кодировки, но все они дают мне тарабарщину. Любая помощь будет признательна, и спасибо вам всем!
Комментарии:
1. Попробуй
obj = s3.get_object(Bucket='BUCKET_NAME', Key='FILE_NAME', ResponseContentType='text/csv')
— это сработает?2. @ErmiyaEskandary К сожалению, это не работает. Это ошибка, которую я получаю:
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 10-11: invalid continuation byte
3. @ErmiyaEskandary вывод
obj['body']
:<botocore.response.StreamingBody object at 0x00000161BD0543D0>
выводobj['body'].read()
:xc7)Dx94xcc:9x01xb4x1fxa9x01x93Gxb6x84Dvxdfx9bxd8xd0uHp<xfexfbxeexb4xeax83x1x02x14x00x14x00x08x08x08x00xf4x8eKSx15 xf8xeewx02x00x00x
(это части вывода) выводobj['body'].read().decode('utf-8')
:UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 10-11: invalid continuation byte
4. @ErmiyaEskandary Не уверен, как я могу узнать, какой набор сжатия у файла
5. @ErmiyaEskandary В любом случае работает на меня. Я попытался зациклиться на содержимом, и я только что получил следующее:
b'hZ0' b'KRhxc1xb4x10:x1fxe6xb7xc3!xc6xc5xc4x03xc2fz>1xc0x9fxa9Tx06xe5xed'xd9xb4x9cxb1xcbvx87x00x08x9bix91-xac xdax14xd9x02xfcFxad'x86x1d]-zx06x84x84xccx8fxe1xc2xf7xbbx13xe4"xbfxf5mxc7xd7UTx0bxb8Sxb4x06Ux01x12wixfd($x08xa27x04Px94x18,xe5xb6x1cx9ax93xdcx16x94x7fx9bxa4xa2xf8$xc7xe2xc4`x813Sxb7' b"?`Yx1e'Qx1cxfaqxca?xeaxfaxe9"
(Это часть вывода)