ベストアンサー
質問: pythonでw +オプションを使用してファイルを開くと、ファイルを切り捨てるとどうなりますか?
ファイルをゼロに切り捨てると、すべてのコンテンツが破棄されます。ファイルサイズは0になるため、空になります。 (そしてデータは失われます)が、ファイルはファイルシステム上にまだ存在します。
UNIXおよびUNIXに似たオペレーティングシステム(および一般に POSIX) 準拠のオペレーティングシステム)truncate(2)
システム呼び出しがあり、ファイルのコンテンツの一部またはすべてを(ファイルの終わりに向かって)破棄するために使用できます。
このようなシステムでは、open(2)
システム呼び出しにフラグパラメータを指定して、 O\_TRUNC
フラグは、ファイルを開くときにファイルの内容を0に切り捨てる必要があることを示します。
同様に、C標準I / Oライブラリ関数fopen()
は開くモードを指定できますw+
は、ファイルが書き込み用に開かれていること、およびファイルが開かれていない場合は作成する必要があることを示します。 tが存在するか、すでに存在する場合は0に切り捨てる必要があります。
Pythonのopen()
関数は、 Cの関数、 w+
は、何かを書き込む前にファイルの内容をゼロの長さに切り捨てることを意味します。
回答
質問はさらに明確にする必要があります。誰が切り捨てを行っていますか?ストリームまたは他のプロセスを開いたのと同じPythonプロセス?別のスレッド/プロセスがファイルを切り捨てているときに、Pythonファイルがファイルに書き込んでいますか?切り捨て操作はループなどで発生していますか?
質問への回答は、これらの書き込みおよび切り捨て操作が発生しているときにファイルで何が起こっているかによって異なります…。
また… protip:python2ドキュメントを見ないでください。 python3のドキュメントをご覧ください。そして、一般的にpython3を使用します