使用 python(3.8) 从 Amazon S3 获取文件时出错

ERROR in getting file from Amazon S3 using python(3.8)

我正在尝试从 Amazon S3 获取数据并将其存储到变量(文件,例如 .pkl 文件)。

我收到以下错误:

错误:

expected str, bytes or os.PathLike object, not _io.BytesIO

S3 代码

class S3Mgr:
    def __init__(self,bucketName):
        self.aws_access_key_id= CONFIG.S3[0]
        self.aws_secret_access_key = CONFIG.S3[1]
        self.region_name = CONFIG.S3[2]
        self.bucketName = bucketName

    def __connect(self):
        self.s3 = boto3.client(
            's3',
            aws_access_key_id=self.aws_access_key_id,
            aws_secret_access_key=self.aws_secret_access_key,
            region_name=self.region_name
            )
    def retrieveModel(self,fileName):
        self.__connect()
        a = self.s3.download_fileobj(Bucket=self.bucketName, Key="fcm/project/"+str(fileName))
        return a['Body'].read()

泡菜代码

import pickle
from io import BytesIO

S3obj = S3mgr("mybucket")
model = S3obj.retrieveModel("model.pkl")

data = BytesIO(model)
model = pickle.load(data)

prediction = model.predict(inputArray)

上面的 inputArray 是输入数组。

试试这个,在您的 s3Mgr class 的 retrieveModel 方法中用 get_object 替换 download_fileobj

像这样:

def retrieveModel(self,fileName):
        self.__connect()
        a = self.s3.get_object(Bucket=self.bucketName, Key="fcm/project/"+str(fileName))
        return a['Body'].read()

我希望,它有效。 Ping 如果有任何进展或需要任何帮助。

干杯!