首页 > 解决方案 > 从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

标签: pythonwindowsoperating-system

解决方案


看起来您正在尝试将目录中的所有文件附加到 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]

注意:使用此类功能时,文件名或文件夹中的空格无关紧要。如果您尝试在命令行上执行某些操作,那么空格很重要并且需要引用或转义。


推荐阅读