Python: Как прочитать и загрузить файл Excel из AWS S3? - PullRequest
0 голосов
/ 23 ноября 2018

Я загрузил файл excel в корзину AWS S3 и теперь хочу прочитать его на python.Любая помощь будет оценена.Вот то, чего я достиг на данный момент:

import boto3
import os

aws_id = 'aws_id'
aws_secret = 'aws_secret_key'

client = boto3.client('s3', aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
bucket_name = 'my_bucket'
object_key = 'my_excel_file.xlsm'
object_file = client.get_object(Bucket=bucket_name, Key=object_key)
body = object_file['Body']
data = body.read()

Что мне нужно сделать дальше, чтобы прочитать эти данные и поработать с ними?

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Потратил довольно много времени на это, и вот как я получил это,

import boto3
import io
import pandas as pd
import json

aws_id = ''
aws_secret = ''
bucket_name = ''
object_key = ''

s3 = boto3.client('s3', aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
obj = s3.get_object(Bucket=bucket_name, Key=object_key)
data = obj['Body'].read()
df = pd.read_excel(io.BytesIO(data), encoding='utf-8')
0 голосов
/ 07 февраля 2019

Вы можете напрямую прочитать файл xls с S3 без необходимости загружать или сохранять его локально.В модуле xlrd предусмотрено предоставление необработанных данных для создания объекта книги.Ниже приведен фрагмент кода.

from boto3 import Session  
from xlrd.book import open_workbook_xls  

aws_id = ''    
aws_secret = ''
bucket_name = ''
object_key = ''

s3_session = Session(aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
bucket_object = s3_session.resource('s3').Bucket(bucket_name).Object(object_key)
content = bucket_object.get()['Body'].read()
workbook = open_workbook_xls(file_contents=content)
0 голосов
/ 23 ноября 2018

Python изначально не поддерживает файлы Excel.Вы можете использовать библиотеку панд функциональность read_excel библиотеки панд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...