Python:如何从AWS S3读取和加载Excel文件?

exa*_*xan 1 python amazon-s3 amazon-web-services python-3.x

我已将一个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()
Run Code Online (Sandbox Code Playgroud)

接下来,我需要做什么才能读取这些数据并对其进行处理?

exa*_*xan 5

花了很多时间,这就是我的工作方式,

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')
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了上面的方法,但收到了这个错误:```TypeError: expected str, bytes or os.PathLike object, not NoneType```。有什么线索吗? (2认同)

mil*_*osh 5

您可以使用awswrangler.s3.read_excel直接读取 excel 文件。请注意,您可以将任何 pandas.read_excel() 参数(工作表名称等)传递给它。

import awswrangler as wr
df = wr.s3.read_excel(path=s3_uri)
Run Code Online (Sandbox Code Playgroud)