以下代码段的目的是搜索文本文件,并查找变量'名称'。如果文本文件中的任何位置都存在"名称",则应将user_new
设置为False
。否则,它在TXT文件中不存在,并且user_new
应为True
。
但是,在这两种情况下,User_new都不会设置为任何内容,并导致错误:" local variable'user_new'在分配前引用"
with open("accuracy.txt", "r") as search:
lineno = 0
for line in search:
lineno = lineno + 1
if name in line:
user_new = False
break
else:
user_new = True
break
search.close()
print(user_new)
在此代码中可能发生的唯一方法是,如果for循环没有迭代。这意味着如果语句永远不会运行,并且user_new
永远不会定义。
确保accuracy.txt
至少具有一条线,否则循环永远不会运行,因为没有行可以循环。
如果文本文件中没有行是不可避免的,请考虑使用以下内容检查文件的长度:
if search.read() == "":
user_new = False
问题有时是accuracy.txt
是空的,这导致循环永远不会运行,并且user_new
永远不会被定义。感谢@joe Allen的答案。