【问题标题】:python boto3 list objects excluding a particular folderpython boto3列出不包括特定文件夹的对象
【发布时间】:2022-10-17 21:22:39
【问题描述】:

我有下一个 S3 文件夹结构:

/my_folder
          ->(some files inside my_folder)
          ->/logs/
          ->/processed/
          ->/another_folder/

我想列出里面的所有文件/my_folder, 但不包括里面的这些文件/logs文件夹。我怎样才能做到这一点?

我已经测试了list_objects_v2files 它仍然在获取所有文件/logs文件夹:

files = s3.list_objects_v2(
    Bucket=BUCKET_NAME, Prefix=input_key, Delimiter="/logs"
)

【问题讨论】:

  • 不,这不是我想要的。答案是3岁,也许现在有办法。
  • 这就是你想要的,没有新的方法。您需要以一种或另一种方式自己过滤结果。要么获取所有文件然后过滤,要么先获取文件夹,过滤文件夹,然后获取每个有效子文件夹的文件。
  • 你想排除 /logs 文件夹吗?
  • @DeepakTripathi 是的

标签: python amazon-web-services amazon-s3 boto3


【解决方案1】:

首先,您应该使用以下代码获取my_folder 中的所有文件夹

来源:气流 s3 挂钩

def list_prefixes(
    bucket_name: Optional[str] = None,
    prefix: Optional[str] = None,
    delimiter: Optional[str] = None,
    page_size: Optional[int] = None,
    max_items: Optional[int] = None,
) -> list:
    """
    Lists prefixes in a bucket under prefix

    :param bucket_name: the name of the bucket
    :param prefix: a key prefix
    :param delimiter: the delimiter marks key hierarchy.
    :param page_size: pagination size
    :param max_items: maximum items to return
    :return: a list of matched prefixes
    :rtype: list
    """
    prefix = prefix or ''
    delimiter = delimiter or ''
    config = {
        'PageSize': page_size,
        'MaxItems': max_items,
    }

    paginator = boto3.client("s3").get_paginator('list_objects_v2')
    response = paginator.paginate(
        Bucket=bucket_name, Prefix=prefix, Delimiter=delimiter, PaginationConfig=config
    )

    prefixes = []  # type: List[str]
    for page in response:
        if 'CommonPrefixes' in page:
            prefixes.extend(common_prefix['Prefix'] for common_prefix in page['CommonPrefixes'])

    return prefixes 

获得文件夹列表后,省略不需要的文件夹,然后获取每个文件夹内的密钥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多