os.path.exists()
函数的功能是查看给定的文件/目录是否存在,存在返回True,不存在返回False。
- 如果给定的文件只有文件名,会在当前文件的目录下索引。
- 给定的文件/目录可以是绝对索引。
文件存在但os.path.exists()返回False
我遇到了这样一个问题:我要索引的目录是D:\Codes\SuperResolution\practice\DL-SR\dataset\train\F-actin\Cell_001
。
这个目录我确定他是存在的,但os.path.exists('D:\Codes\SuperResolution\practice\DL-SR\dataset\train\F-actin\Cell_001')
返回False。
解决方案
在字符串前加上r,即:
import os
os.path.exists(r'D:\Codes\SuperResolution\practice\DL-SR\dataset\train\F-actin\Cell_001')
字符串前加r的作用是防止字符串转义,r表示raw,即告诉编译器后面这段字符串就保持原样就好,不需要做转义。
原因分析
我是这样定位问题的,首先看一下最开始的目录在不在,一个一个查下去发现在索引到文件夹train的时候出现问题。
接着看了一下目录下是有train目录的,排除目录不存在的可能性。而后在字符串前加r,就可以索引到目录了。
看过解决方案我们就明白了,我这个问题其实是因为编译器把\t转义了,因此索引不到。
总结
遇到文件存在但os.path.exists()返回False的问题大概可以分为两种情况:
- 文件确实不存在或索引有错(比如没有直接复制路径,而是手打路径,结果中间字母打错了或者漏打空格之类的)。
- 编译器把路径转义了,导致路径错误。
对于第二种情况,解决方案就是在字符串前加r防止转义