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 に答える