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