欢迎访问宙启技术站
智能推送

用boto3在Python中列出AmazonS3存储桶中的文件

发布时间:2023-12-28 06:53:12

Boto3是AWS SDK for Python的一个库,用于与Amazon Web Services(AWS)服务进行交互。在Python中使用Boto3可以非常方便地列出Amazon S3存储桶中的文件。下面是一个使用Boto3列出Amazon S3存储桶中文件的示例。

首先,您需要安装Boto3库。您可以通过运行以下命令来安装它:

pip install boto3

接下来,您需要配置AWS凭证。您可以在AWS IAM控制台中创建一个新的IAM用户并获取访问密钥ID和秘密访问密钥。

在Python中,您可以使用以下代码来连接到Amazon S3:

import boto3

# 配置AWS凭证
access_key = 'YOUR_ACCESS_KEY'
secret_key = 'YOUR_SECRET_KEY'

# 创建S3客户端
s3 = boto3.client('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key)

现在,您可以使用Boto3通过调用s3.list_objects()方法列出存储桶中的文件。以下是一个查找存储桶中所有文件并打印其键的示例:

import boto3

# 配置AWS凭证
access_key = 'YOUR_ACCESS_KEY'
secret_key = 'YOUR_SECRET_KEY'

# 创建S3客户端
s3 = boto3.client('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key)

# 列出存储桶中的文件
bucket_name = 'YOUR_BUCKET_NAME'
response = s3.list_objects(Bucket=bucket_name)

# 打印文件键
if 'Contents' in response:
    for item in response['Contents']:
        print(item['Key'])

在上面的示例中,将YOUR_BUCKET_NAME替换为您要列出文件的存储桶的名称。此代码将输出存储桶中所有文件的键。

如果存储桶中的文件数量非常大,不能一次列出所有文件,您可以使用分页机制来获取所有文件。以下是一个使用分页参数的示例:

import boto3

# 配置AWS凭证
access_key = 'YOUR_ACCESS_KEY'
secret_key = 'YOUR_SECRET_KEY'

# 创建S3客户端
s3 = boto3.client('s3', aws_access_key_id=access_key, aws_secret_access_key=secret_key)

# 列出存储桶中的文件(使用分页参数)
bucket_name = 'YOUR_BUCKET_NAME'
response = s3.list_objects_v2(Bucket=bucket_name)

# 打印文件键
if 'Contents' in response:
    for item in response['Contents']:
        print(item['Key'])

# 获取下一页的文件
while response['IsTruncated']:
    response = s3.list_objects_v2(Bucket=bucket_name, ContinuationToken=response['NextContinuationToken'])
    if 'Contents' in response:
        for item in response['Contents']:
            print(item['Key'])

在上面的示例中,我们使用list_objects_v2()方法并使用NextContinuationToken参数来获取下一页的文件。在逐页获取文件时,将使用IsTruncated属性来检查是否有更多文件可用。

这是使用Boto3在Python中列出Amazon S3存储桶中的文件的示例。您可以根据需要进行修改和扩展这个示例。