python - 从os获取数据时文件不存在
问题描述
我正在尝试将图像位置列表添加到每个父文件夹的列表中以进行图像比较。但是,当我使用 OS 从文件夹中提取图像列表,然后使用 os.path.exists 从列表中检查它们时,某些路径显然不存在,即使在我手动检查时文件确实存在。
我该如何解决这个问题或找出为什么现在说文件路径不存在?我已经尝试去除空格
import os
directory = '$$$'
listFiles = os.listdir(directory)
tester = []
for entry in listFiles:
fullpath = os.path.join(directory, entry)
test = fullpath
listFiles = os.listdir(fullpath)
print(listFiles)
for n in listFiles:
fullpath = os.path.join(test,n)
fullpath = fullpath.strip()
tester.append(fullpath)
for n in range (len(tester)):
print(tester[n].strip())
print(os.path.exists(tester[n]))
break
解决方案
看起来您正在尝试将目录中的所有文件附加到 list tester
,包括子目录。如果您正在使用os.listdir()
,则需要在所有也是 dirs 的条目上递归地运行它,也许通过使用is_dir()
. 但是,不要手动编写所有这些,只需使用os.walk()
已经递归的文件夹:
directory = '$$$'
tester = []
for parent, folders, files in os.walk(directory):
for file in files:
tester.append(os.path.join(parent, file))
print(tester)
可以缩短为:
directory = '$$$'
tester = [os.path.join(parent, file)
for parent, folders, files in os.walk(directory)
for file in files]
注意:使用此类功能时,文件名或文件夹中的空格无关紧要。如果您尝试在命令行上执行某些操作,那么空格很重要并且需要引用或转义。
推荐阅读
- json - 批量更新 PostgreSQL 中的 JSON 字段
- flutter - 带有列和行的颤振座椅视图
- c# - Jenkins 构建失败并出现错误“未安装文件扩展名 '.tif' 的 IFilter”但在本地工作
- objective-c - 在目标c的tableview中加载时重复选择单元格
- python - 未安装来自自定义通道的 Conda 依赖项
- ios - 您可以从 PDF 数据创建 UIImage 吗?
- python - 无法在 python 中访问 args 值
- javascript - 在特定(空间)位置播放视频
- php - Laravel 计数不起作用,有什么支持吗?
- javascript - 如何使用 api 调用更新值?