簡體   English   中英

從 S3 存儲桶獲取文件夾內容

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM