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