7
def FileCheck(fn):       
       try:
           fn=open("TestFile.txt","U") 
       except IOError: 
           print "Error: File does not appear to exist."
       return 0 

我正在尝试创建一个函数来检查文件是否存在,如果不存在,那么它应该打印错误消息并返回 0 。为什么这不起作用???

4

4 回答 4

23

如果要从 except 块中返回,则需要缩进 return 0。此外,您的论点并没有做任何事情。我假设您希望此函数能够测试任何文件,而不是为其分配文件句柄?如果没有,您不需要任何参数。

def FileCheck(fn):
    try:
      open(fn, "r")
      return 1
    except IOError:
      print "Error: File does not appear to exist."
      return 0

result = FileCheck("testfile")
print result
于 2011-12-05T01:17:14.727 回答
4

这可能是因为您想以读取模式打开文件。将“U”替换为“r”。

当然,你也可以使用os.path.isfile('filepath')

于 2011-12-05T01:19:01.927 回答
3

我认为os.path.isfile()如果您只想“检查”文件是否存在会更好,因为您不需要实际打开文件。无论如何,打开后关闭文件被认为是最佳做法,上面的示例不包括此。

于 2016-03-30T14:19:48.400 回答
-1

如果您只想检查文件是否存在,python os 库有解决方案,例如os.path.isfile('TestFile.txt'). OregonTrails 答案不起作用,因为您仍然需要最后使用 finally 块关闭文件,但要做到这一点,您必须将文件指针存储在 try 和 except 块之外的变量中,这会破坏解决方案的全部目的。

于 2019-07-23T14:43:39.030 回答