with 声明,是否有需要打开文件/检查以获取异常/进行资源手动关闭,例如

try:
  f = open('myfile.txt')

  for line in f:
    print line
except IOError:
  print 'Could not open/read file'
finally:
  f.close()
有帮助吗?

解决方案

您当前的代码试图处理未找到的文件的例外,或不足的访问权限等, with open(file) as f: 块不会做。

另外,在这种情况下, finally: 街区会提出一个 NameError 自从 f 不会定义。

在一个 with 块,任何例外(任何类型的,也许是在您的代码中以零为零的划分) 在块内 仍将提高,但是即使您不处理它,您的文件也将始终正确关闭。那是完全不同的。

您想要的是:

try:
    with open("myfile.txt") as f:
        do_Stuff()  # even if this raises an exception, f will be closed.
except IOError:
    print "Couldn't open/read myfile.txt"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top