Как удалить и записать заново строку с ответом в текстовом файле, содержащем информацию в формате "Вопрос - ответ" при изменении ответа?
Чтобы изменить содержимое строки в текстовом файле, вам необходимо открыть файл, считать его содержимое, затем изменить нужную строку и записать обновленное содержимое обратно в файл.
Например, вы можете использовать следующий код на 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' будет изменена строка с ответом на новый.
Если же вы хотите полностью удалить и затем записать заново строку с ответом при изменении, вы можете использовать тот же код, но с добавлением удаления строки перед добавлением новой строки.
<b>Например так:</b> <br/> <br/> <pre><code class="python">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)</code></pre>
Захватить файл монопольно, прочитать все строки из файла, найти нужную, изменить её, очистить файл, записать в него все строки, освободить файл. <br/> Чтобы меньше страдать фигнёй, освоить реляционные базы данных и использовать хотя бы sqlite.