簡體   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