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

如何用Boto与Python判断AWS S3中的Key是文件还是文件夹

判断AWS S3中Key是文件还是文件夹(Boto + Python)

嘿,我来帮你搞定这个问题!你说得太对了——S3根本没有传统文件系统里那种真正的文件夹,那些看起来像文件夹的东西,要么是以/结尾的空Key对象,要么纯粹是因为有文件路径包含这个前缀才“看起来像”文件夹。

你不用再额外创建Key对象啦!srcBucket.list()返回的每个obj本身就是Key实例,直接访问它的key属性就能拿到完整的路径字符串。然后就可以用你想到的方法:通过判断这个字符串是否以/结尾来区分文件和“文件夹”。

修改后的代码可以这样写:

for obj in srcBucket.list():
    # 直接获取Key的路径字符串
    key_path = obj.key
    # 判断是否为文件:不以/结尾
    if not key_path.endswith('/'):
        print(f"文件: {key_path}")
    else:
        print(f"文件夹/前缀: {key_path}")

举个例子,你提到的两个Key:

  • <Key: my-folder,output/2019/01/28/>对应的key属性是output/2019/01/28/,以/结尾,会被判定为“文件夹”
  • <Key: my-folder,output/2019/01/28/part_1111>对应的key属性是output/2019/01/28/part_1111,不以/结尾,会被判定为文件

另外补充个小细节:有些时候S3的“文件夹”是手动创建的空对象,有些则是因为存在子路径文件自动生成的前缀,但这个判断逻辑在两种场景下都能正常工作,完全满足你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:04:53