繁体   English   中英

如何从 AWS S3 嵌套目录中读取泡菜文件?

[英]How to read pickle file from AWS S3 nested directory?

我在 AWS S3 Bucket 的嵌套目录中有一个 pickle 文件,但我无法使用boto3库加载它以将其与 AWS Lambda 一起使用。

我试图遵循这个问题的答案,但没有人工作。 到目前为止,这是我的代码:

s3 = boto3.resource('s3')
source_bucket = "source_bucket_name"
key = "folder1/pickle_file.p"
response = s3.Bucket(source_bucket).Object(key).get()
body_string = response['Body'].read()
try:
    loaded_pickle = pickle.loads(body_string)
except Exception as e:
    print(e)

编辑

将此 function 加载到 AWS 时,我收到以下错误消息:

embedded null byte

除了我在评论中所说的之外,您的代码似乎还不错。 那么您上传到 S3 的内容可能不正确。 以下是完整的工作示例:

import pickle
import boto3

mylist = [1,2,3]

# create pickle file

with open('/tmp/pickle_file.p', 'wb') as f:
  pickle.dump(mylist, f)

# upload to s3

source_bucket='source_bucket_name'
key = "folder1/pickle_file.p"

with open('/tmp/pickle_file.p', 'rb') as f:

  response = boto3.client('s3').put_object(
      Body=f,
      Bucket=source_bucket,
      Key=key)

  print(response)

# read back from s3

s3 = boto3.resource('s3')
response = s3.Bucket(source_bucket).Object(key).get()

body_string = response['Body'].read()

try:
    loaded_pickle = pickle.loads(body_string)
except Exception as e:
    print(e)

# should print out `mylist`
print(loaded_pickle)  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM