FileNotFoundError,但文件确实存在

问题描述

我正在尝试在我的 Jupyter Notebook 中加载 .dcm 文件,但出现 FileNotFound 错误即使文件确实存在!我已经通过在 DICOM 查看器中打开它进行了检查。代码非常简单:

image = pydicom.dcmread(dicom_filename).pixel_array

错误信息如下:

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\StefanCepa995\\Desktop\\Machine Learning\\Projects\\Computer Vision\\Breast Mammography Analysis\\Data\\CBIS-DDSM\\dicom_files\\Mass-Training_Full_Mammogram_Images\\Mass-Training_P_00001_LEFT_CC\\07-20-2016-DDSM-74994\\1.000000-full mammogram images-24515\\1-1.dcm'

有趣的部分是,我尝试列出 C:\\Users\\StefanCepa995\\Desktop\\Machine Learning\\Projects\\Computer Vision\\Breast Mammography Analysis\\Data\\CBIS-DDSM\\dicom_files\\ 目录中的所有文件,而 os.walk() 列出所有 .dcm 文件,但是当我在其中一个文件上使用 os.path.exists() 时我得到 False 作为返回值的文件

for root,dirs,files in os.walk(cbis_ddsm_dicom_mass_train_dir):
    for f in files:
        file_path = os.path.join(root,f)
        print(file_path)
        print(os.path.exists(file_path))

C:\Users\StefanCepa995\Desktop\Machine Learning\Projects\Computer Vision\Breast Mammography Analysis\Data\CBIS-DDSM\dicom_files\Mass-Training_Full_Mammogram_Images\Mass-Training_P_00001_LEFT_CC\07-20-2016-DDSM-74994\1.000000-full mammogram images-24515\1-1.dcm
False
C:\Users\StefanCepa995\Desktop\Machine Learning\Projects\Computer Vision\Breast Mammography Analysis\Data\CBIS-DDSM\dicom_files\Mass-Training_Full_Mammogram_Images\Mass-Training_P_00001_LEFT_MLO\07-20-2016-DDSM-90988\1.000000-full mammogram images-80834\1-1.dcm
False
C:\Users\StefanCepa995\Desktop\Machine Learning\Projects\Computer Vision\Breast Mammography Analysis\Data\CBIS-DDSM\dicom_files\Mass-Training_Full_Mammogram_Images\Mass-Training_P_00004_LEFT_CC\07-20-2016-DDSM-95697\1.000000-full mammogram images-46540\1-1.dcm
False
C:\Users\StefanCepa995\Desktop\Machine Learning\Projects\Computer Vision\Breast Mammography Analysis\Data\CBIS-DDSM\dicom_files\Mass-Training_Full_Mammogram_Images\Mass-Training_P_00004_LEFT_MLO\07-20-2016-DDSM-20939\1.000000-full mammogram images-00162\1-1.dcm
False

解决方法

以下是可能的选项:您输入文件路径的方式可能与 Windows 不兼容。以下是帮助解决此问题的链接:Windows path in Python

此外,我发现您可以使用两行代码轻松搜索文件,并且比使用嵌套循环的时间复杂度更低。这是我在自己的代码中尝试过的:

    import os.path

    # stores whether given file exists or not
    result = os.path.isfile(r'C:\Users\jindu\Coding\squid_fram1.png')
    print(result)

我从这个网站得到了这个参考:https://careerkarma.com/blog/python-check-if-file-exists/