You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的aioboto3或boto3仅获取S3中的有效文件路径

S3路径筛选解决方案

问题根因

  • 现有代码的逻辑是提取所有S3对象Key的父目录路径存入集合,最终返回的全是目录路径,和筛选文件路径的需求完全相反
  • S3本身不存在真实的层级文件夹结构,你看到的空文件夹本质是Key以/结尾的0字节占位对象

修正代码

不需要收集父目录,直接筛选符合文件特征的Key即可:

file_paths = set()

result = await self.s3_client.list_objects(Bucket=bucket, Prefix=prefix)
objects = result.get("Contents", [])

try:
    for obj in objects:
        key = obj["Key"]
        # 排除以/结尾的目录占位对象,仅保留真实文件路径
        if not key.endswith("/"):
            file_paths.add(key)
except Exception as exc:
    print(f"Getting objects with prefix: {prefix} failed")
    raise exc

可选补充校验

如果需要进一步排除无后缀的特殊命名文件,可以追加判断条件,确认Key的最后一段路径包含文件名特征:

import os

# 在上述if判断中追加条件
if not key.endswith("/") and "." in os.path.basename(key):
    file_paths.add(key)

内容的提问来源于stack exchange,提问作者KZiovas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:30:01