我不知道为什么我valex.exists(path)
会一直返回None
,我的意思是它在单独测试时工作正常,但是当另一个模块调用它以供使用时,None
尽管路径名是有效的,它仍然会继续返回。
这是我的valex.exists(path)
:
def exists(path):
# I've imported os already
if os.path.exists(path):
return "Exists"
else:
return None
对于这些类型的函数(我同意您的函数没有用并且返回 None 是多余的但通常是多余的事实),我认为使用单行 if 语句更清楚:
def exists(path):
return "Exists" if os.path.exists(path) else None
有几种可能性可以解释这一点。
ls
命令中看到的文件名或任何可能看起来与您的代码正在查找的内容匹配但实际上并不匹配的文件名。例如,在 Unix 中,退格控件可能会出现在文件名中并扭曲它们在ls
输出中的显示方式。相似的字符也可能出现在文件名中;例如,西里尔字母“a”与拉丁字母“a”看起来相同。小心你如何传递“路径”:
print exists('C:\temp\test.txt')
>>> None
print exists(r'C:\temp\test.txt')
>>> Exists
print exists('C:\\temp\\test.txt')
>>> Exists
以下代码(您的示例具有显式导入并删除了提到的冗余返回 None Lanaru)在我的互联网端在这里可以正常工作。当我跑步时exists('C:/Python27')
。Exists
被退回;当我尝试时也会发生同样的事情exists('C:\Python27')
。
(上面提到的代码):
import os
def exists(path):
if os.path.exists(path):
return "Exists"
关于相对路径的评论可能是正确的。这个代码片段当然没问题。