簡體   English   中英

Python:如何從 AWS S3 讀取和加載 excel 文件?

[英]Python: How to read and load an excel file from AWS S3?

我已將一個 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()

接下來我需要做什么才能讀取這些數據並對其進行處理?

花了很多時間在上面,這就是我如何讓它工作的,

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')

您可以直接從 S3 讀取 xls 文件,而無需下載或保存到本地。 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)

您可以使用awswrangler.s3.read_excel直接讀取 excel 文件。 請注意,您可以將任何 pandas.read_excel() 參數(工作表名稱等)傳遞給它。

import awswrangler as wr
df = wr.s3.read_excel(path=s3_uri)

Python 本身不支持 Excel 文件。 您可以使用大熊貓庫大熊貓庫 read_excel 功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM