Pythonで一時ファイルを作成する場合は、Pythonの標準ライブラリにtempfileと呼ばれるモジュールがあります。他のプログラムを起動してファイルを操作する場合は、tempfile.mkstemp()を使用してファイルを作成し、os.fdopen()を使用してmkstemp()が提供するファイル記述子にアクセスします。
ちなみに、あなたはあなたがPythonプログラムからコマンドを実行していると言いますか?ほとんどの場合、サブプロセスモジュールを使用する必要があります。
したがって、次のようなコードを非常に陽気に書くことができます。
import subprocess
import tempfile
import os
(fd, filename) = tempfile.mkstemp()
try:
tfile = os.fdopen(fd, "w")
tfile.write("Hello, world!\n")
tfile.close()
subprocess.Popen(["/bin/cat", filename]).wait()
finally:
os.remove(filename)
これを実行すると、cat
コマンドは完全に機能することがわかりますが、一時ファイルはfinally
ブロックから削除されています。mkstemp()が自分に返す一時ファイルを削除する必要があることに注意してください。ライブラリには、いつ使用したかを知る方法がありません。
(編集:私はNamedTemporaryFileがあなたがしたいことを正確に行ったと思っていましたが、それはそれほど便利ではないかもしれません-一時ファイルオブジェクトが閉じられるとすぐにファイルが削除され、閉じる前に他のプロセスにファイルを開かせます一部のプラットフォーム、特にWindowsでは機能しません。申し訳ありませんが、私の側では失敗します。)