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,那么这些字节会发生什么?它们留在内存中的文件对象?

现在我的主要问题是:如何保持相同的文件对象写入移动的文件?因为本质上文件是相同的,它只有改变位置。或者那不可能?

谢谢您的帮助!

4

2 回答 2

0

fobject 不知道您移动了文件。您可以通过添加来做到这一点

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

搬家后。

于 2016-05-29T05:02:00.303 回答
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
于 2016-05-29T04:20:04.067 回答