我正在嘗試從 S3 存盤桶讀取檔案內容(而不是下載它)。問題是該檔案位于多級檔案夾下。例如,完整路徑可能是s3://s3-bucket/folder-1/folder-2/my_file.json. 如何獲取該特定檔案而不是使用列出所有物件的迭代方法?
這是我要更改的代碼:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('s3-bucket')
for obj in my_bucket.objects.all():
key = obj.key
if key == 'folder-1/folder-2/my_file.json':
return obj.get()['Body'].read()
能否以更簡單、更直接的方式完成?
uj5u.com熱心網友回復:
是的 - 無需列舉存盤桶。
直接使用 讀取檔案s3.Object,提供存盤桶名稱作為第一個引數和物件鍵作為第二個引數。
S3 中并不真正存在“檔案夾”——Amazon S3 不使用層次結構來組織其物件和檔案。為簡化組織起見,Amazon S3 控制臺將“檔案夾”顯示為對物件進行分組的一種方式,但它們最終會融入您的物件鍵中。
這應該有效:
import boto3
s3 = boto3.resource('s3')
obj = s3.Object("s3-bucket", "folder-1/folder-2/my_file.json")
body = obj.get()['Body'].read()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/352686.html
上一篇:檢查字串是否在另一列熊貓中
