You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指定Windows路径读取DICOM文件时遇FileNotFoundError求助

排查DICOM文件存在却触发FileNotFoundError的问题

我来帮你拆解这个看似矛盾的问题——明明os.listdir能看到DICOM文件,同一目录的CSV也能正常读取,但dcmread就是报文件找不到,大概率是文件名隐形差异或者路径处理的细节坑,咱们一步步验证:

1. 优先排查:文件名是否存在不可见字符/输入误差

你手动写的DICOM文件名看起来和目录里的一致,但很可能存在肉眼无法分辨的差异(比如全角/半角符号、空格、不可见控制字符)。建议用代码打印文件名的字符编码,对比实际文件和你手动输入的差异:

# 打印目录中所有文件的字符编码
for fname in os.listdir(path):
    print(f"文件名: {fname}")
    print(f"字符编码: {[ord(c) for c in fname]}\n")

# 打印你手动拼接的文件名的字符编码
target_fname = '1.2.276.0.7230010.3.1.4.8323329.300.1517875162.258081.dcm'
print(f"手动输入的文件名编码: {[ord(c) for c in target_fname]}")

如果编码列表不一致,说明文件名存在隐形差异,此时不要手动输入文件名,直接用os.listdir返回的结果拼接路径:

# 自动获取目录中的DICOM文件
dcm_files = [f for f in os.listdir(path) if f.lower().endswith('.dcm')]
if dcm_files:
    yy = os.path.join(path, dcm_files[0])
    ds = dicom.dcmread(yy)
else:
    print("目录中未找到DICOM文件")

2. 检查文件权限与系统锁定

虽然CSV能正常读取,但DICOM文件可能被其他程序锁定(比如刚用医学影像软件打开过未关闭),或者存在特殊权限设置:

  • 右键DICOM文件,查看「属性」-「安全」,确认当前用户有读取权限
  • 关闭所有可能打开该文件的程序(包括资源管理器的预览窗口),再重试读取

3. 验证路径的绝对正确性

用os.path.abspath打印拼接后的完整路径,复制到Windows资源管理器中打开,确认路径是否真的指向目标文件:

print(os.path.abspath(yy))

如果资源管理器能打开,但dcmread仍报错,可能是Windows长路径限制问题——Windows默认不支持过长的路径,此时可以给路径添加\\?\前缀来绕过限制:

long_path = r'\\?\D:\REGI\siim\dicom-images-train\1.2.276.0.7230010.3.1.2.8323329.300.1517875162.258080\1.2.276.0.7230010.3.1.3.8323329.300.1517875162.258079\1.2.276.0.7230010.3.1.4.8323329.300.1517875162.258081.dcm'
ds = dicom.dcmread(long_path)

4. 检查pydicom版本兼容性

旧版本的pydicom可能存在路径处理bug,建议升级到最新稳定版后重试:

pip install --upgrade pydicom

内容的提问来源于stack exchange,提问作者Regi Mathew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:42:54