使用 `boto3` 轻松列出 Amazon S3 存储桶的内容
2024-03-31 04:27:26
使用 boto3
列出 S3 存储桶的内容
简介
boto3
是一个流行的 Python 库,用于与 Amazon Web Services (AWS) 交互。它为 S3(简单存储服务)提供了一系列功能强大的 API,使你能够轻松地管理和访问 S3 存储桶。本文将指导你如何使用 boto3
列出存储桶的内容,类似于 Unix 中的 ls
命令。
先决条件
- Python 3.6 或更高版本
- 安装了
boto3
库 - 具有对目标 S3 存储桶的访问权限的 AWS 凭证
步骤
1. 导入 boto3
首先,导入 boto3
库:
import boto3
2. 建立 S3 资源
接下来,创建一个 S3 资源,它将允许你访问 S3 服务:
s3 = boto3.resource('s3')
3. 获取存储桶对象
现在,获取你想要列出内容的存储桶对象:
my_bucket = s3.Bucket('bucket-name')
将 bucket-name
替换为你自己的存储桶名称。
4. 列出存储桶内容
最后,遍历存储桶中的所有对象并打印它们的键(名称或路径):
for obj in my_bucket.objects.all():
print(obj.key)
示例代码
以下是列出存储桶内容的完整代码示例:
import boto3
# 存储桶名称
bucket_name = 'my-bucket'
# 建立 S3 资源
s3 = boto3.resource('s3')
# 获取存储桶对象
my_bucket = s3.Bucket(bucket_name)
# 列出存储桶内容
for obj in my_bucket.objects.all():
print(obj.key)
常见问题解答
1. 我可以在不指定存储桶名称的情况下列出所有存储桶吗?
是,你可以使用以下代码列出所有存储桶:
for bucket in s3.buckets.all():
print(bucket.name)
2. 我可以过滤存储桶内容吗?
是的,你可以使用 filter
方法根据文件大小、前缀或其他元数据筛选对象。例如,以下代码列出文件大小大于 1MB 的所有对象:
for obj in my_bucket.objects.filter(SizeGreaterThan=1024 * 1024):
print(obj.key)
3. 我可以仅获取存储桶中对象的名称吗?
是的,你可以使用 iter_objects
方法仅获取对象的名称:
for obj in my_bucket.objects.all():
print(obj.key)
4. 我可以使用 boto3
从存储桶下载对象吗?
是的,你可以使用 download_file
方法从存储桶下载对象:
my_bucket.download_file('object-key', 'local-file-path')
5. 如何递归列出存储桶中嵌套文件夹中的所有文件?
你可以使用 prefix
参数递归列出存储桶中嵌套文件夹中的所有文件:
for obj in my_bucket.objects.filter(Prefix='folder/'):
print(obj.key)
结论
使用 boto3
列出 S3 存储桶的内容非常简单。通过遵循这些步骤,你可以轻松地访问和管理 S3 中的文件。本文提供了所需的示例和常见问题解答,帮助你快速上手。