Get Filename List from an S3 Bucket or a Specific S3 Folder in Python

In this tutorial, we will show you how to retrieve a list of filenames from an S3 bucket or a specific S3 folder using the Boto3 Python library.

First, install the latest version of the Boto3 Python library using the following command:

pip install boto3

Getting Filenames from S3 Bucket

The following is an example code to get a list of filenames from an S3 bucket:

import boto3
from botocore.exceptions import ClientError

ACCESS_SECRET = "your aws access secret"
ACCESS_KEY = "your aws access key"

s3_client = boto3.client('s3', region_name='us-east-1', aws_access_key_id=ACCESS_KEY,
                         aws_secret_access_key=ACCESS_SECRET)

# bucket name
bucket_name = "bucket-one"

# getting filename list from S3 Bucket
try:
    response = s3_client.list_object_versions(Bucket=bucket_name)
    file_list = []
    for item in response:
        key = item['Key']
        size = item['Size']
        file_list.append({'file_name': key, 'file_size': size})
    print(file_list)
except ClientError as ex:
    print("Error: ", ex)

Getting Filenames from S3 Folder

The following is an example code to get filename list from a specific S3 folder:

import boto3
from botocore.exceptions import ClientError

ACCESS_SECRET = "your aws access secret"
ACCESS_KEY = "your aws access key"

s3_client = boto3.client('s3', region_name='us-east-1', aws_access_key_id=ACCESS_KEY,
                         aws_secret_access_key=ACCESS_SECRET)

# bucket name
bucket_name = "bucket-one"

# folder path
prefix = "example-folder"

# getting filename list from S3 Bucket
try:
    response = s3_client.list_object_versions(Bucket=bucket_name, Prefix =prefix)
    file_list = []
    for item in response:
        key = item['Key']
        size = item['Size']
        file_list.append({'file_name': key, 'file_size': size})
    print(file_list)
except ClientError as ex:
    print("Error: ", ex)