← Все вопросы

В чём разница между режимами 'r', 'w' и 'a' в open()?

Задан 8 месяцев назад1.3к просмотров3 ответа
19

Постоянно путаю эти буквы. Когда файл затирается, когда дописывается, а когда просто читается? Объясните по-человечески.

3 ответа

28
✓ Принятый ответ — помог автору

Коротко:

  • 'r' — чтение. Файл должен существовать, иначе FileNotFoundError. Писать нельзя.
  • 'w' — запись. Файл создаётся, если нет; если есть — всё содержимое стирается. Курсор в начале.
  • 'a' — дозапись (append). Файл создаётся, если нет; если есть — старое сохраняется, новое пишется в конец.

Плюс есть 'r+' (чтение+запись без затирания) и буква 'b' для бинарного режима ('rb', 'wb'). Самая частая ловушка новичков — открыть в 'w', ожидая дозаписи, и потерять данные.

Глеб Степанов вот про 'w' что затирает — это меня и спасло 😄 · 8 месяцев назад
9

'w' — стереть и писать, 'a' — дописать в конец. Это главное.

6

Ещё добавлю: с 'x' файл создаётся, но если он уже есть — будет ошибка. Удобно, когда не хочешь случайно перезаписать чужой файл.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект