В моей системе Linux с Python 2.5.2 записи в файл, открытый с помощью «+», всегда добавляются в конец, независимо от текущей позиции поиска.
Вот пример:
import os
if __name__ == "__main__":
f = open("test", "w")
f.write("Hello")
f.close()
f = open("test", "a+")
f.seek(0, os.SEEK_SET)
f.write("Goodbye")
f.close()
В моей системе (хотя я и обратился к началу файла) это приводит к файлу "test", содержащему:
Hellogoodbye
В документации по Python сказано, что аргумент mode совпадает с аргументом stdio.
Справочная страница linux для fopen () говорит, что (выделение добавлено):
Открытие файла в режиме добавления (как
первый символ режима) вызывает
все последующие операции записи в
этот поток должен происходить в конце файла,
как если бы ему предшествовал
fseek(stream,0,SEEK_END);
вызов.
Моя ссылка на stdio гласит, что добавление «+» к режиму (то есть «a +») означает, что поток открывается для ввода и вывода . Однако перед переключением между вводом и выводом должен быть сделан вызов, чтобы явно установить положение файла.
Таким образом, добавление «+» не меняет того факта, что в некоторых системах запись для файла, открытого в режиме «a» или «+», всегда добавляется в конец файла.