Святослав Ясновидец
Мыслитель
(7925)
2 дня назад
import os
old_file = open('test.txt', 'r', encoding='utf-8')
new_file = open('new_file.txt', 'w', encoding='utf-8')
need_name = input()
name = old_file.readline().strip() # Считываем имя и удаляем лишние пробелы и переносы строк
found = False
while name: # Цикл выполняется, пока есть строки для чтения
mark = old_file.readline().strip() # Считываем оценку и удаляем лишние пробелы и переносы строк
if name == need_name:
found = True
else:
new_file.write(f'{name}\n')
new_file.write(f'{mark}\n') # Добавляем перенос строки после оценки
name = old_file.readline().strip() # Считываем следующее имя
print('Файл обновлён' if found else 'Такого имени не найдено')
old_file.close()
new_file.close()
os.remove('test.txt')
os.rename('new_file.txt', 'test.txt')
София
Мастер
(1096)
2 дня назад
Вы в начале кода устанавливаете name = old_file.readline(), то есть на протяжении всего файла у вас переменная name не меняется и ее значение остается первой строчкой искомого файла (то есть оно никогда не равно ", то есть цикл никогда не остановится). Вам нужно продублировать эту строчку непосредственно в цикл
Вот мой код:
import os
old_file = open('test.txt','r',encoding='utf-8')
new_file = open('new_file.txt','w',encoding='utf-8')
need_name = input()
name = old_file.readline()
found = False
while name!='':
mark = old_file.readline()
if name==need_name:
found = True
else:
new_file.write(f'{name}\n')
new_file.write(f'{mark}')
print('Файл обновлён' if found else 'Такого имени не найдено')
old_file.close()
new_file.close()
os.remove('test.txt')
os.rename('new_file.txt','test.txt')
Но когда я запускаю программу и ввожу требуемое имя, во временном файле new_file.txt бесконечно выполняется цикл и печатаются тысячи строчек.
Почему цикл выполняется бесконечно?