[英]Get folder content from S3 bucket
我正在嘗試從 S3 存儲桶中的文件夾中獲取數據。 我的存儲桶中有兩個文件夾,文章和評論。 我真的只想獲取評論文件夾中的所有數據。 數據是多個 json 文件。 當我經過
這是評論文件夾中眾多 json 文件之一中的 json object 的示例
{"7475199770543690800": {"author": "BKD2674", "body": "Saying its Meme, then saying you're buying in lol", "ups": 10, "fullname": "t1_fsqwfto", "created_utc": "2020-06-03T13:54:45", "subreddit": "stocks", "article_id": "gvuau0"}
我真的只想要 json object 的“正文”部分,因為它包含評論。 我想將 json 文件中的所有內容存儲在一個大字典中,遍歷字典並檢索 json object 的“正文”部分中的內容。 如果有更好的方法來做到這一點,請告訴我。
s3 = boto3.resource('s3')
bucket = s3.Bucket('diegos-reddit-bucket')
for obj in bucket.objects.all():
key = obj.key
body = obj.get()['Body'].read()
這只是我輸入的一個樣本來測試它。 我得到了我的存儲桶,但 S3 正在閱讀文章,而不僅僅是評論文件夾。 body 變量也是字節類型。
您可以使用存儲桶對象過濾器function 過濾您查詢的存儲桶對象(我無法直接鏈接到 function,請向下滾動一點)。
確實,對象的內容是字節編碼的字符串。 您可以使用body.decode('utf-8')
來獲取文本表示,但json.load
應該能夠為您處理。 因此,這應該有效
import json, boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('diegos-reddit-bucket')
for obj in bucket.objects.filter(Prefix='comments'):
body = json.load(obj.get()['Body'])
沒有辦法只讀取 JSON 文件的body
部分,您必須先下載並完整閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.