Поиск текстовых файлов Python работает не так, как ожидалось

#python-3.x

#python-3.x

Вопрос:

Целью следующего фрагмента кода является поиск в текстовом файле и поиск переменной ‘name’. Если ‘name’ присутствует где-либо в текстовом файле, оно должно иметь user_new значение False . В противном случае он не существует в текстовом файле, а user_new должен быть True .

Однако значение user_new в обоих случаях никогда не устанавливается ни на что и приводит к ошибке: «локальная переменная ‘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)
  

Комментарии:

1. Где вы определили name ? Каково его значение? Также: при использовании with вам не нужно закрывать файл впоследствии

2. имя было определено пользователем, введенным ранее в коде. Я могу опубликовать полный код с этим, если требуется, но там много ненужного для этой проблемы.

Ответ №1:

В этом коде это может произойти только в том случае, если циклу for нечего повторять. Это означало бы, что оператор if никогда не выполняется и user_new никогда не определяется.

Убедитесь, что accuracy.txt есть хотя бы одна строка, иначе цикл никогда не запустится, поскольку нет строк для перебора.

Если отсутствие строк в текстовом файле неизбежно, попробуйте проверить длину файла с помощью чего-то такого, как:

 if search.read() == "":
    user_new = False
  

Ответ №2:

Проблема заключалась в том, что иногда accuracy.txt было пусто, что приводило к тому, что цикл никогда не запускался и user_new никогда не определялся. Спасибо @Joe Allen за ответ.