2011-11-10 5 views
1

Pythonでは、(アプリケーションがクラッシュしても)ファイルが破棄されたことを確認するために、tempfile.mkstempを使用して書き込み用の一時ファイルを開きます。ファイルハンドラを変更せずに共有モードでファイルを開くことはできますか?

このファイルを別のアプリケーションに渡す必要がありますが、このアプリケーションは、ファイルが書き込み用に開かれている間はファイルを開くことができません。

ファイルハンドルがすぐに削除されないように、ファイルハンドルを変更せずにアクセスモードを変更したり、ファイルを開いたりすることはできますか?

更新:ファイルを読み取りモードで開いても問題が解決しない場合は、ファイルをsharedモードで開く必要があります。

答えて

2

開いているファイルのファイルモード(r、w、a)を切り替える方法はありません。

TempFileの代わりに、mmapを使用して、プログラム間でデータを共有することを検討してください。

+0

これは良い選択肢かもしれませんが、私は新しいモジュールを追加したくありません。 – sorin

+1

なぜですか? * mmap *モジュールは既に標準ライブラリにあります。それを使用するための唯一の "コスト"は '' import mmap''です。 –

+0

Python 2.5ではなく、現在アップグレードできません。 – sorin

-1

'a'モードで開けてみませんか?あなたは読んで追加することができますか?

また、TempFileを手動で開き、atexitイベントでプログラムが終了したときに削除することをお勧めします。

+0

'a'モードはまだ書き込みモードですので、あなた自身をテストしてください。 – sorin

+0

あなたは 'a'モードファイルを読むことができます。なぜ、プログラム間でファイルオブジェクトを渡すだけではないのですか? –