为什么未定义“ f”?

时间:2019-12-21 10:25:38

标签: python

我是Python的新手,我正在关注this关于文件处理的教程。

如果向下滚动,您会看到如何使用Python关闭文件,并且在其下方,他正在使用tryfinally, 我的问题是在我的程序中,我得到一个错误:'f'未定义

我为什么会遇到这个问题?我错过了什么吗?

示例:

try:
   f = open("test.txt",encoding = 'utf-8')
finally:
   f.close()

我也不想一本好书。

2 个答案:

答案 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")