Как удалить и записать заново строку с ответом в текстовом файле, содержащем информацию в формате "Вопрос - ответ" при изменении ответа?
Чтобы изменить содержимое строки в текстовом файле, вам необходимо открыть файл, считать его содержимое, затем изменить нужную строку и записать обновленное содержимое обратно в файл. Например, вы можете использовать следующий код на Python: ```python with open('file.txt', 'r') as file: lines = file.readlines() # Находим индекс строки, которую нужно изменить index_to_change = -1 for i, line in enumerate(lines): if 'Вопрос - ответ' in line: index_to_change = i break if index_to_change != -1: new_answer = 'Новый ответ' lines[index_to_change] = lines[index_to_change].split(' - ')[0] + ' - ' + new_answer + '\n' with open('file.txt', 'w') as file: file.writelines(lines) ``` Таким образом, в файле 'file.txt' будет изменена строка с ответом на новый. Если же вы хотите полностью удалить и затем записать заново строку с ответом при изменении, вы можете использовать тот же код, но с добавлением удаления строки перед добавлением новой строки.
Например так:
def update_answer(file_path, question, new_answer): with open(file_path, 'r') as file: lines = file.readlines() updated_lines = [] question_found = False for line in lines: if line.startswith(question): updated_lines.append(f"{question} - {new_answer}\n") question_found = True else: updated_lines.append(line) #если вдруг не найден добавляем в конец, если не надо убрать if not question_found: updated_lines.append(f"{question} - {new_answer}\n") with open(file_path, 'w') as file: file.writelines(updated_lines) # юзать так file_path = 'answers.txt' question = 'Вопрос#2' new_answer = 'новый ответ' update_answer(file_path, question, new_answer)
Захватить файл монопольно, прочитать все строки из файла, найти нужную, изменить её, очистить файл, записать в него все строки, освободить файл.
Чтобы меньше страдать фигнёй, освоить реляционные базы данных и использовать хотя бы sqlite.