Разрешает ли режим «+» произвольный доступ к файлам во всех системах? - PullRequest
2 голосов
/ 06 августа 2009

Согласно документации открытой функции «a» означает добавление, что в некоторых системах Unix означает, что все записи добавляются в конец файла независимо от текущей позиции поиска.

Будет ли 'a +' разрешать произвольную запись в любую позицию файла во всех системах?

1 Ответ

2 голосов
/ 06 августа 2009

В моей системе 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» или «+», всегда добавляется в конец файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...