0

Python 2.7 では減価償却されているためtempfile.mktemp、次のように一時ファイルへの一意のパスを生成します。

temp = tempfile.NamedTemporaryFile(suffix=".py")
path_to_generated_py = temp.name
temp.close()
# now I use path_to_gerated_py to create a python file

これは Python 2.7 で推奨される方法ですか? すぐに一時ファイルを閉じると、悪用のように見えますNamedTemporaryFile....

4

1 に答える 1

3

の直接置換はtempfile.mktemp()ですtempfile.mkstemp()。後者は のようなファイルを作成するNamedTemporaryFileため、(コード スニペットのように) 閉じる必要があります。との違いNamedTemporaryFileは、閉じたときにファイルが削除されないことです。これは実際に必要です。バージョンには理論上の競合状態があり、2 つのプロセスが同じ一時ファイル名で終了する可能性があります。代わりに使用mkstemp()すると、ファイルが削除されることはなく、使用するサードパーティのライブラリによって上書きされる可能性がありますが、いつでもファイルが存在するため、別のプロセスがファイルを作成するリスクはありません。同名の一時ファイル。

于 2012-12-08T15:21:07.907 に答える