Вы не можете сделать это с текстовым файлом. Либо вы хотите прочитать это, либо вы хотите написать в него. a
или r
указывает seek
для определенного местоположения в файле. Если указать оба параметра, open
будет указывать на два разных места в файле одновременно.
Текстовые файлы вообще не могут быть обновлены на месте. Вы можете использовать a
, чтобы добавить новый материал в конец, но это все. Чтобы сделать то, что, я думаю, вам нужно, вам нужно открыть существующий файл в режиме чтения, открыть другой новый файл в режиме записи и скопировать данные из одного в другой.
После этого у вас есть два файла, поэтому вы должны позаботиться об удалении старого. Если это хлопотно, взгляните на модуль in-place
.
Другой вариант - прочитать входной файл в память, закрыть и снова открыть его для записи, а затем записать новую версию файла. Тогда вам не нужно удалять старую копию. Но если что-то пойдет не так в середине, у вас не будет старого входного файла, потому что вы его удалили, и нового выходного файла тоже нет, потому что вы не успешно записали его.
Причина этого заключается в том, что текстовые файлы не предназначены для произвольного доступа.