7

次の一時ファイルの名前を変更する方法は何ですか

pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()

私はos.renameについて何かを読みましたが、それを適用する方法は本当にわかりません

4

2 に答える 2

37

最善の方法は、ファイルをコピーし、閉じたときに一時的なファイルを Python に削除させることです。

私は実際にあなたが使用した方が良いと思いますos.link:

with tempfile.NamedTemporaryFile(dir=os.path.dirname(actual_name)) as f:
  f.write(pdf)
  os.link(f.name, actual_name)

これはos.link一時ファイルへのハード リンクを作成するために使用され、一時ファイルが自動的に削除された後も保持されます。

このコードにはいくつかの利点があります。

  • オブジェクトをコンテキスト マネージャーとして使用しているtempfileため、明示的に閉じることを心配する必要はありません。
  • ファイルをコピーするのではなく、ファイルへのハードリンクを作成しているため、大きなファイルをコピーすることによるディスク容量や時間の消費について心配する必要はありません。
  • データをコピーしていないので、 を呼び出す必要はありませんf.flush()。ファイルが閉じられると、ファイルは自動的にフラッシュされます。
于 2016-04-22T04:09:21.037 に答える