从 S3 读取 Excel - AttributeError: 'StreamingBody' 对象没有属性 'seek'

mtr*_*ode 9 python amazon-s3

我有一个 python 脚本,它从 S3 读取一个 excel 文件,但在 AWS Batch 中触发时出错。该代码在另一个 Ubuntu 机器上运行良好。

AttributeError: 'StreamingBody' object has no attribute 'seek'
Run Code Online (Sandbox Code Playgroud)

我阅读excel的代码部分如下

import boto3
import pandas as pd    
session = boto3.Session(aws_access_key_id = config.access_key_id, aws_secret_access_key = config.secret_access_key)
client = session.client('s3') 
obj = client.get_object(Bucket = s3_bucket, Key = s3_file)    
df = pd.read_excel(obj['Body'],sheet_name=sheet_name, skiprows=1)
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢。

小智 17

似乎 read_excel 改变了传入的“类文件”对象的要求,现在这个对象必须有一个 seek 方法。我通过更改pd.read_excel(obj['Body'])为解决了这个问题pd.read_excel(io.BytesIO(file_obj['Body'].read()))