2016-05-29 19 views
0

如果我打開一個文件如何使用相同的文件對象在移動的文件中進行寫入?

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

,並寫一些東西在裏面

fileObj.write(someBytes) 

然後決定將它移到別的地方

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

,然後保持它

fileObj.write(someMoreBytes) 

會發生什麼?

一對夫婦的意見:

  1. 好像在/tempFolder/test.txt文件只包含在第一組中寫入的字節。
  2. 文件移動後,似乎從文件對象中刪除了第一組字節
  3. 在文件移動後後續寫入文件對象似乎並沒有在磁盤上創建新文件test.txt,那麼這些字節會發生什麼?他們留在文件對象的內存中?

現在我的主要問題是:如何保持相同的文件對象寫入移動的文件?因爲基本上這個文件是相同的,所以它只改變位置。或者這是不可能的?

感謝您的幫助!

回答

0

在移動文件shutil.move('test.txt','/ tempFolder')並且想要繼續添加字節之後,您將需要創建一個新變量,指示新文件的位置。

由於您將文件移至新位置,因爲您最初創建的對象已移動,fileObj.write(someMoreBytes)不再寫入字節。所以你將不得不重新打開一個新文件來「繼續」寫入字節或指定新的位置,如上所述,將字節添加到現有文件。

對於防爆:

import os 
f=open('existingfile.txt', 'wb+') 

f.write('somebytes') 
f.close() 
os.rename('currentPath\existingfile.txt', 'NewPath\existingfile.txt') 

#reopen file - Repeat 
+0

我知道重新打開該文件將工作,但我的問題是:我如何保持該文件相同的文件對象?我想你的答案是:這是不可能的。 – maximedupre

+0

就我而言不可能 – glls

0

fobject不知道你移動的文件。您可以通過添加

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

之後移動。

+0

我知道重新打開該文件可以工作,但我的問題是:我如何保持該文件的同一個文件對象?我想你的答案是:這是不可能的。 – maximedupre

相關問題