1

我不知道为什么我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
4

4 回答 4

1

对于这些类型的函数(我同意您的函数没有用并且返回 None 是多余的但通常是多余的事实),我认为使用单行 if 语句更清楚:

def exists(path):
    return "Exists" if os.path.exists(path) else None
于 2012-08-21T21:27:24.920 回答
0

有几种可能性可以解释这一点。

  1. python解释器可能没有文件所在文件夹的权限,因此看不到文件。或者,如果您的系统使用 ACL,则 ACL 中可能有一条规则阻止解释器查看文件。
  2. 也许您的代码并没有尝试打开您认为的内容。在打开文件名之前打印或记录文件名以进行验证。
  3. 您在文件资源管理器或ls命令中看到的文件名或任何可能看起来与您的代码正在查找的内容匹配但实际上并不匹配的文件名。例如,在 Unix 中,退格控件可能会出现在文件名中并扭曲它们在ls输出中的显示方式。相似的字符也可能出现在文件名中;例如,西里尔字母“a”与拉丁字母“a”看起来相同。
于 2012-08-21T21:20:42.753 回答
0

小心你如何传递“路径”:

print exists('C:\temp\test.txt')
>>> None

print exists(r'C:\temp\test.txt')
>>> Exists

print exists('C:\\temp\\test.txt')
>>> Exists
于 2012-08-21T21:25:22.683 回答
0

以下代码(您的示例具有显式导入并删除了提到的冗余返回 None Lanaru)在我的互联网端在这里可以正常工作。当我跑步时exists('C:/Python27')Exists被退回;当我尝试时也会发生同样的事情exists('C:\Python27')

(上面提到的代码):

import os

def exists(path):
    if os.path.exists(path):
        return "Exists"

关于相对路径的评论可能是正确的。这个代码片段当然没问题。

于 2012-08-21T21:09:51.003 回答