305

S3 でバケットの中身を確認するにはどうすればよいboto3ですか? (つまり、する"ls")?

次のことを行います。

import boto3
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('some/path/')

戻り値:

s3.Bucket(name='some/path/')

その内容を見るにはどうすればよいですか?

4

19 に答える 19

345

コンテンツを表示する 1 つの方法は次のとおりです。

for my_bucket_object in my_bucket.objects.all():
    print(my_bucket_object)
于 2015-05-15T00:17:48.053 に答える
140

これは「ls」に似ていますが、接頭辞フォルダーの規則を考慮せず、バケット内のオブジェクトを一覧表示します。キー名の一部であるプレフィックスを除外することは、読者に任されています。

Python 2 の場合:

from boto.s3.connection import S3Connection

conn = S3Connection() # assumes boto.cfg setup
bucket = conn.get_bucket('bucket_name')
for obj in bucket.get_all_keys():
    print(obj.key)

Python 3 では:

from boto3 import client

conn = client('s3')  # again assumes boto.cfg setup, assume AWS S3
for key in conn.list_objects(Bucket='bucket_name')['Contents']:
    print(key['Key'])
于 2015-05-15T14:45:35.440 に答える
7
#To print all filenames in a bucket
import boto3

s3 = boto3.client('s3')

def get_s3_keys(bucket):

    """Get a list of keys in an S3 bucket."""
    resp = s3.list_objects_v2(Bucket=bucket)
    for obj in resp['Contents']:
      files = obj['Key']
    return files

  
filename = get_s3_keys('your_bucket_name')

print(filename)

#To print all filenames in a certain directory in a bucket
import boto3

s3 = boto3.client('s3')

def get_s3_keys(bucket, prefix):

    """Get a list of keys in an S3 bucket."""
    resp = s3.list_objects_v2(Bucket=bucket, Prefix=prefix)
    for obj in resp['Contents']:
      files = obj['Key']
      print(files)
    return files

  
filename = get_s3_keys('your_bucket_name', 'folder_name/sub_folder_name/')

print(filename)

更新: 最も簡単な方法は、awswrangler を使用することです

import awswrangler as wr
wr.s3.list_objects('s3://bucket_name')
于 2019-11-18T22:26:51.867 に答える
2

ここに解決策があります

import boto3

s3=boto3.resource('s3')
BUCKET_NAME = 'Your S3 Bucket Name'
allFiles = s3.Bucket(BUCKET_NAME).objects.all()
for file in allFiles:
    print(file.key)
于 2020-06-07T07:05:09.423 に答える
1

次のようにして行うこともできます。

csv_files = s3.list_objects_v2(s3_bucket_path)
    for obj in csv_files['Contents']:
        key = obj['Key']
于 2020-07-02T12:17:29.590 に答える
0

使用するcloudpathlib

cloudpathlibpathlibシンプルなAPI を使用して AWS S3 (および Azure BLOB ストレージ、GCS など) と対話できるように、便利なラッパーを提供します。でインストールできますpip install "cloudpathlib[s3]"

orと同様に、ディレクトリの内容を一覧表示するためにorをpathlib使用できます。globiterdir

コピーして貼り付けて実行できるパブリック AWS S3 バケットの例を次に示します。

from cloudpathlib import CloudPath

s3_path = CloudPath("s3://ladi/Images/FEMA_CAP/2020/70349")

# list items with glob
list(
    s3_path.glob("*")
)[:3]
#> [ S3Path('s3://ladi/Images/FEMA_CAP/2020/70349/DSC_0001_5a63d42e-27c6-448a-84f1-bfc632125b8e.jpg'),
#>   S3Path('s3://ladi/Images/FEMA_CAP/2020/70349/DSC_0002_a89f1b79-786f-4dac-9dcc-609fb1a977b1.jpg'),
#>   S3Path('s3://ladi/Images/FEMA_CAP/2020/70349/DSC_0003_02c30af6-911e-4e01-8c24-7644da2b8672.jpg')]

# list items with iterdir
list(
    s3_path.iterdir()
)[:3]
#> [ S3Path('s3://ladi/Images/FEMA_CAP/2020/70349/DSC_0001_5a63d42e-27c6-448a-84f1-bfc632125b8e.jpg'),
#>   S3Path('s3://ladi/Images/FEMA_CAP/2020/70349/DSC_0002_a89f1b79-786f-4dac-9dcc-609fb1a977b1.jpg'),
#>   S3Path('s3://ladi/Images/FEMA_CAP/2020/70349/DSC_0003_02c30af6-911e-4e01-8c24-7644da2b8672.jpg')]

2021-05-21 20:38:47 PDT にreprexlite v0.4.2で作成

于 2021-05-22T03:42:08.400 に答える