def FileCheck(fn):
try:
fn=open("TestFile.txt","U")
except IOError:
print "Error: File does not appear to exist."
return 0
我正在尝试创建一个函数来检查文件是否存在,如果不存在,那么它应该打印错误消息并返回0。为什么这不起作用???
答案 0 :(得分:16)
如果要从except块中返回,则需要缩进返回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
答案 1 :(得分:3)
这可能是因为您想要以读取模式打开文件。 将“U”替换为“r”。
当然,您也可以使用os.path.isfile('filepath')
。
答案 2 :(得分:2)
我认为os.path.isfile()
更好,如果你只是想"检查"如果文件存在,因为您不需要实际打开该文件。无论如何,在打开之后,关闭文件被认为是最佳实践,上面的示例不包括此内容。
答案 3 :(得分:-1)
如果您只想检查文件是否存在,则python os库提供了诸如os.path.isfile('TestFile.txt')
之类的解决方案。 OregonTrails的答案不起作用,因为您仍然需要最后使用finally块关闭文件,但要这样做,必须将文件指针存储在try和except块之外的变量中,这会破坏解决方案的全部目的。