一部のデータを一時ファイルに書き込む必要がある Python スクリプトを作成してから、一時ファイルを読み取る C++ プログラムを実行するサブプロセスを作成しています。私はNamedTemporaryFile
これに使用しようとしていますが、ドキュメントによると、
名前付きの一時ファイルがまだ開いている間に、その名前を使用してファイルを 2 度目に開くことができるかどうかは、プラットフォームによって異なります (Unix では使用できますが、Windows NT 以降では使用できません)。
実際、Windows では、書き込み後に一時ファイルをフラッシュしても、一時ファイルが消えるまで閉じないと、サブプロセスは読み取り用に開くことができません。
delete=False
でファイルを作成し、サブプロセスを生成する前にファイルを閉じ、完了したら手動で削除することで、これを回避しています。
fileTemp = tempfile.NamedTemporaryFile(delete = False)
try:
fileTemp.write(someStuff)
fileTemp.close()
# ...run the subprocess and wait for it to complete...
finally:
os.remove(fileTemp.name)
これはエレガントではないようです。これを行うより良い方法はありますか?おそらく、サブプロセスがアクセスできるように、一時ファイルのアクセス許可を開く方法はありますか?