Python遍历目录如何仅列出文件夹名称而不输出完整路径
解决方案:Python列出指定目录下文件夹时仅输出文件夹名称
问题原因
你当前脚本中print(d)输出的是os.path.join()拼接后的完整绝对路径,因此会展示全路径内容。os.listdir()本身返回的就是目标目录下各级文件/文件夹的短名称(不带前置路径),只需要调整打印的变量即可。
方法1:直接打印os.listdir()返回的原始名称
判断文件夹类型时仍然需要拼接完整路径给os.path.isdir()做校验,打印时直接输出遍历得到的原始文件名即可:
import os rootdir = r"V:\DATABASES\0 Suspension\Suspensia Pictures" # 替换为你的目标目录,Windows路径前加r避免反斜杠转义问题 for file in os.listdir(rootdir): d = os.path.join(rootdir, file) if os.path.isdir(d): print(file)
运行后输出效果:
X01BJ0004 X01BJ0005 X01BJ0006 X01BJ0008 X01BJ0026 X01BJ0037 X01BJ0038 X01BJ0039 X01BJ0735
方法2:从完整路径中提取末尾文件夹名
如果你后续逻辑需要用到完整路径、不想调整打印变量,可以用os.path.basename()直接从完整路径里截取最后一级的名称,效果和方法1完全一致:
import os rootdir = r"V:\DATABASES\0 Suspension\Suspensia Pictures" for file in os.listdir(rootdir): d = os.path.join(rootdir, file) if os.path.isdir(d): print(os.path.basename(d)) # 提取路径最后一段的名称
方法3:使用pathlib模块(Python3.4+推荐写法)
标准库pathlib是Python3之后推出的面向对象路径处理模块,不需要手动拼接路径,通过属性即可直接获取文件夹名,写法更简洁不易出错:
from pathlib import Path rootdir = Path(r"V:\DATABASES\0 Suspension\Suspensia Pictures") for item in rootdir.iterdir(): if item.is_dir(): print(item.name) # .name属性直接返回不带路径的文件/文件夹名
内容的提问来源于stack exchange,提问作者Eddiex045
相关产品推荐
相关产品推荐

