[英]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.