我是Python的新手,我正在关注this关于文件处理的教程。
如果向下滚动,您会看到如何使用Python关闭文件,并且在其下方,他正在使用try
和finally
,
我的问题是在我的程序中,我得到一个错误:'f'未定义。
我为什么会遇到这个问题?我错过了什么吗?
示例:
try:
f = open("test.txt",encoding = 'utf-8')
finally:
f.close()
我也不想一本好书。
答案 0 :(得分:2)
您最好使用以下语法:
with open("test.txt", encoding = 'utf-8') as f:
# Do something with f
无需关闭它,with
会为您完成此操作。
答案 1 :(得分:1)
您可能遇到的错误是Name 'f' can be not defined
,因为如果在open
方法期间出现错误,则永远不会分配f
,因此不会在finally
。一种解决方案是在:
f = None
try:
f = open("test.txt", encoding='utf-8')
except FileNotFoundError as fnfe:
print("File not found")
exit(10)
finally:
if f:
f.close()
但是,如果使用这种语法(如果不是非常有用),则可以使用with
语句,该语句在您离开该块时会自动关闭该对象,但一定要抓住FileNotFoundError
>
try:
with open("test.txt",encoding = 'utf-8') as f:
# perform file operations
except FileNotFoundError as fnfe:
print("File not found")