python - 当路径不是当前目录时,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
怎么会这样?
解决方案
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))]
推荐阅读
- javascript - 如何使用 Javascript 将来自不同输入的值相乘以获得总数?
- c++ - 是否可以在 C++ 中为字符串循环移位实现 O(N) 时间和 O(1) 空间解决方案
- sql-server - 如何在 vb.net 中使用 RadTimePicker 只消磨时间?
- amazon-web-services - 如何使用 AWS CDK 将 Elastic Beanstalk EC2 实例域加入到现有域加入目录?
- google-apps-script - 使用 html 表单将文件上传到 Google 云端硬盘时出现“无法读取属性‘未定义的文件名’”错误
- java - 错误:在加载动态页面之前显示 html 内容的几分之一秒
- asp.net - html 中的 Blazor 输出数据错误编码
- mysql - 将 UTF8MB4 附加字符转换回 UTF8 对应字符
- python - 将超过 1 个 arg 添加到列表 python
- unity3d - 渐变着色器 Z 仅在场景视图中战斗