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

Python从文件路径提取文件名异常:获取到父文件夹名而非目标文件名的问题咨询

问题排查与解决方案

我来帮你梳理下问题所在,然后给出对应的解决办法:

问题根源

你当前代码里的label = os.path.basename(os.path.dirname(path))这行逻辑搞反了:

  • os.path.dirname(path)会返回文件所在的父文件夹路径(比如对于D:\AI\Deep learning\face generator\images\chris evans 1.jpg,它返回的是D:\AI\Deep learning\face generator\images)
  • 再对这个父路径用os.path.basename(),自然就得到了父文件夹名images,这完全不是你想要的文件名。

两种正确实现方式

方式一:直接提取完整路径的文件名

直接对拼接好的path调用os.path.basename(),就能拿到目标文件名:

import os

for file in files:
    if file.endswith("png") or file.endswith("jpg"):
        path = os.path.join(root, file)
        print(path)
        label = os.path.basename(path)  # 直接获取完整路径的文件名部分
        print(label)

方式二:直接使用循环变量file

如果你的files列表里存储的本来就是纯文件名(不带任何路径),那直接用file作为label更高效,省去了额外的路径处理:

import os

for file in files:
    if file.endswith("png") or file.endswith("jpg"):
        path = os.path.join(root, file)
        print(path)
        label = file  # 直接用遍历得到的文件名
        print(label)

小优化建议

如果想让后缀匹配更灵活(比如兼容大写后缀.PNG、.JPG),可以把判断条件改成:

if file.lower().endswith(('.png', '.jpg')):

这样不管文件名后缀是大写还是小写,都能被正确匹配到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:27:44