Я читаю строку из текстового файла и сразу после этого пишу строку в том же файле. Однако строка записывается в конце файла, а не в текущей позиции файла. В чем причина write
написания в ложной позиции? Как я могу заставить write
писать в нужной позиции файла?
Вот код:
Сначала я создаю файл с двумя строками текста:
>>> file_test_01 = open('test_01.txt', 'w')
>>>
>>> file_test_01.write('Firstword\n')
10
>>> file_test_01.write('Secondword\n')
11
>>> file_test_01.close()
Теперь файл test_01.txt
имеет следующее содержимое:
Firstword
Secondword
Затем я читаю одну строку из файла и что-то пишу потом. Хотя tell
показывает позицию 10 в файле, текст "New"
записывается в конце файла. В чем ошибка?
>>> file_test_02 = open('test_01.txt', 'r+')
>>> read_text = file_test_02.readline()
>>> read_text
'Firstword\n'
>>> print('Position: ', file_test_02.tell())
Position: 10
>>> file_test_02.write('New\n')
4
>>> file_test_02.close()
Текстовый файл выглядит так
Firstword
Secondword
New
Согласно моему пониманию операций с файлами, он должен выглядеть следующим образом:
Firstword
New
ndword
Тем не менее, если я добавлю команду file_test_02.seek(file_test_02.tell())
, содержимое файла будет соответствовать ожидаемому. Но это не имеет смысла для меня, потому что эта команда говорит: «go на место, где вы на самом деле», т. Е. Полностью избыточный.
Полный работающий код:
>>> file_test_02 = open('test_01.txt', 'r+')
>>> read_text = file_test_02.readline()
>>> read_text
'Firstword\n'
>>> print('Position: ', file_test_02.tell())
Position: 10
>>> file_test_02.seek(file_test_02.tell())
10
>>> file_test_02.write('New\n')
4
>>> file_test_02.close()
Примечание: То же самое происходит в Python 3.5.2 (по умолчанию, 8 октября 2019, 13:06:37) [G CC 5.4.0 20160609] на linux и в Python 3.7.6 (по умолчанию, De c 19 2019, 23:49:42) [G CC 5.4.0 20160609] в linux