Как сохранить запись в перемещенном файле с тем же файловым объектом?

Если я открою файл

fileObj = open(test.txt, 'wb+')

и написать некоторые вещи в нем

fileObj.write(someBytes)

тогда решите переместить его куда-нибудь еще

shutil.move('test.txt', '/tempFolder')

а затем продолжайте писать в нем

fileObj.write(someMoreBytes)

что происходит?

Пара наблюдений:

  1. Похоже, что файл at /tempFolder/test.txtсодержит только первый набор байтов, которые были записаны.
  2. После перемещения файла первый набор байтов удаляется из объекта file
  3. Последующая запись на объект file после перемещения файла не создает новый файл на диске attest.txt, поэтому что происходит с этими байтами? Они остаются в памяти объекта file?

Теперь мой главный вопрос: Как сохранить тот же файловый объект для записи в перемещенный файл? Поскольку по существу файл является тем же самым, он имеет только изменить местоположение. Или это невозможно?

Спасибо за помощь!

2 ответа

  1. после перемещения файла shutil.move (‘test.txt’, ‘/tempFolder’), и хотите продолжать добавлять байты к нему, вам нужно будет создать новую переменную, указывающую новое расположение файла.

    Так как вы переместили файл в новое место, fileObj.write (someMoreBytes) больше не записывает байты, так как объект, который вы изначально создали, был перемещен. таким образом, вам придется заново открыть новый файл, чтобы «продолжить» запись байтов в него или указать новое расположение, как указано выше, чтобы добавить байты в существующий файл.

    Для Ex:

    import os
    f=open('existingfile.txt', 'wb+')
    
    f.write('somebytes')
    f.close()
    os.rename('currentPath\existingfile.txt', 'NewPath\existingfile.txt')
    
    #reopen file - Repeat
    
  2. fobject не знает, что вы переместили файл. Вы можете сделать это, добавив

    fileObj = open("tempFolder/test.txt", "wb+")
    

    после переезда.