Python 为什么';f';没有定义吗?
我是Python新手,下面是关于文件处理的教程 如果向下滚动,您可以看到如何使用Python关闭文件,在该文件下,他正在使用Python 为什么';f';没有定义吗?,python,Python,我是Python新手,下面是关于文件处理的教程 如果向下滚动,您可以看到如何使用Python关闭文件,在该文件下,他正在使用try和finally, 我的问题是,在我的程序中,我得到一个错误:'f'未定义 为什么我会遇到这个问题?我错过什么了吗 示例: try: f = open("test.txt",encoding = 'utf-8') finally: f.close() 我不想从一本好书开始。您最好使用以下语法: with open("test.txt", encoding
try
和finally
,
我的问题是,在我的程序中,我得到一个错误:'f'未定义
为什么我会遇到这个问题?我错过什么了吗
示例:
try:
f = open("test.txt",encoding = 'utf-8')
finally:
f.close()
我不想从一本好书开始。您最好使用以下语法:
with open("test.txt", encoding = 'utf-8') as f:
# Do something with f
无需关闭它,
with
为您完成此操作。您可能遇到的错误是名称“f”无法定义
,因为如果在打开
方法期间出现错误,您将永远不会分配f
,因此它最终不会在中定义。解决方案是在以下情况之前指定另一个值:
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")
处理文件时,请始终使用和
语句。我得到了一个不能定义的名称“f”
。在我的情况下,您确定要得到f未定义
?@azro我不明白您的意思。如果您尝试打开的文件不存在,f
将不会被定义,并且您最终会在块中得到此错误。这不是一个好的编码示例,本教程的整个章节都不应该再使用了。使用文件的“正确”方法是使用和open('test.txt')作为f:
已经有相当一段时间了。@azro除了此之外,没有其他方法修复OP的代码。。。或者只需使用除了
并跳过issue@roganjosh看看我的答案,有,但不是nice@Tomerikoo答案已被编辑,我的评论与一个不再是实际答案一部分的句子相关。我觉得整个结构似乎不正确。您应该在中使用open()
尝试。第一个块不是最佳实践,第二个方法仍然会失败,如果找不到文件(无论with
块中是否存在异常),我的错误是:名称“f”未定义,但正常。第一个解决方案不起作用,没有这样的文件或目录:“test.txt”
即使您使用try:
@nakE add an,它仍然需要找到该文件,除了像我一样的,您的路径不正确