Указатель в файле, открытом в режиме 'ab'

подскажите, пожалуйста, как в режиме 'ab' в файле изменить указатель "seek", но не на конец строки, а на нужное конкретное место. В данном режиме, я так понимаю, не работает метод seek(), ведь после его установки, запись в файл происходит все равно в конец.


Ответы (1 шт):

Автор решения: CrazyElf

Используйте режим r+b, по-другому никак. В режиме ab действительно дозапись происходит строго в конец файла, seek игнорируется. Пример на питоне:

filename = 'test.test'
with open(filename, 'wb') as f:
    f.write(bytes('abcdef', encoding='ascii'))
    
with open(filename, 'r+b') as f:
    f.write(bytes('gh', encoding='ascii'))
    f.seek(2)
    f.write(bytes('01', encoding='ascii'))
    
with open(filename) as f:
    print(f.read())

Вывод:

gh01ef
→ Ссылка