首页 > 解决方案 > 当路径不是当前目录时,os.path.isdir() 无法识别目录

问题描述

我有一个目录列表(purple, blue, red)要在名为colors.

当我从内部运行此脚本时colors

path_to_folders = './'
folders = [f for f in os.listdir(path_to_folders) if os.path.isdir(f)]
print(folders)

我得到文件夹列表:

['purple', 'blue', 'red']

当我'path_to_folders = '../colors'从目录外部设置和运行脚本时colors,其中包含的目录不会被识别为目录,即使它们被读入为f.

文件夹列表为空:[],但打印每个都f给出:

purple
blue
red

怎么会这样?

标签: pythondirectorydirectory-structure

解决方案


os.path.listdir()只返回文件名,没有路径名,而os.path.isdir()需要完整的路径名,所以你应该使用os.path.join()将路径名添加到文件名:

folders = [f for f in os.listdir(path_to_folders) if os.path.isdir(os.path.join(path_to_folders, f))]

推荐阅读