os.path.isdir() 当路径不是当前目录时无法识别目录

os.path.isdir() not recognizing directories when path is not current directory

我有一个目录列表(purplebluered)要在名为 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']

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

文件夹列表为空:[],但打印每个 f 得到:

purple
blue
red

怎么会这样?

如果开头没有 ../,这些文件夹将被视为在 CWD 中。 CWD 中不存在此类文件夹。调整您的代码:

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

os.path.listdir() returns 只是文件名,没有路径名,而 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))]