os.path.isdir() 当路径不是当前目录时无法识别目录
os.path.isdir() not recognizing directories when path is not current directory
我有一个目录列表(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']
当我从 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))]
我有一个目录列表(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']
当我从 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))]