即使预期为“真”,也会保持返回“无”

时间:2012-08-21 20:59:50

标签: python file path

我不知道为什么我的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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

下面的代码(你的示例显示导入和冗余返回无Lanaru提到删除)在我的网络结束时工作正常。当我运行exists('C:/Python27')时。 Exists被退回;当我尝试exists('C:\Python27')时会发生同样的事情。

(上述代码):

import os

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

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

答案 2 :(得分:0)

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

  1. python解释器可能没有文件所在文件夹的权限,因此看不到该文件。或者,如果您的系统使用ACL,则ACL中可能存在一条规则,阻止解释程序查看该文件。
  2. 也许你的代码并没有试图打开你的想法。打开或记录文件名后再打开它进行验证。
  3. 您在文件资源管理器或ls命令中看到的文件名或其他任何内容可能与您的代码所查找的内容相匹配,但实际上并不匹配。例如,在Unix中,退格控件可能出现在文件名中,并扭曲它们在ls输出中的显示方式。类似外观的字符也可以出现在文件名中;例如,西里尔语'a'与拉丁语'a'看起来相同。

答案 3 :(得分:0)

小心你如何传递'路径':

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

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

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