1. ホーム
  2. python

[解決済み] boto3でS3バケットからファイルの内容を読み込む

2022-03-07 01:08:54

質問

S3バケットにあるファイル名を読み込むには

objs = boto3.client.list_objects(Bucket='my_bucket')
    while 'Contents' in objs.keys():
        objs_contents = objs['Contents']
        for i in range(len(objs_contents)):
            filename = objs_contents[i]['Key']

さて、実際のファイルの内容を取得する必要があるのですが、同様に open(filename).readlines() . どのような方法があるでしょうか?

どのように解決するのですか?

boto3は、オブジェクトの反復処理などの作業を容易にするリソースモデルを提供します。残念ながら、StreamingBodyには readline または readlines .

s3 = boto3.resource('s3')
bucket = s3.Bucket('test-bucket')
# Iterates through all the objects, doing the pagination for you. Each obj
# is an ObjectSummary, so it doesn't contain the body. You'll need to call
# get to get the whole body.
for obj in bucket.objects.all():
    key = obj.key
    body = obj.get()['Body'].read()