带有语句的Python-是否需要再处理旧式文件?
-
10-10-2019 - |
题
有 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"
不隶属于 StackOverflow