pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()
は私がos.renameについて代を読み、次の一時ファイルの名前を変更する方法は何ですが、私は本当に今、それは
pdf = render_me_some_pdf() #PDF RENDER
f = tempfile.NamedTemporaryFile()
f.write(pdf)
f.flush()
は私がos.renameについて代を読み、次の一時ファイルの名前を変更する方法は何ですが、私は本当に今、それは
あなたは経由でファイル名にアクセスすることができますどのように適用するかしないでくださいf.name
。ただし、delete=False
を使用しない限り、Pythonは閉じられた時点で自動的に一時ファイルを削除しようとします。自動削除を無効にすると、保存しなくても一時ファイルが保持されます。これはあまり良い考えではありません。
最良の方法は、コピーファイルと、それが閉じていたときにPythonが一時的なものを削除させることである:
import shutil
shutil.copy(f.name, 'new-name')
よく見えます。もし私が電子メールのemail.attach_file(f.name)にtemplileを添付したいのなら、どうすればいいですか? – nelsonvarela
@iAmTheOneAndOnly私は 'email.attach_file()'について知らないのですが、 '_file'のないバージョンもあればファイルの生成を完全に省略して、PDFデータ自体を添付するために 'email.attach(pdf)'を実行するだけです。 – glglgl
最良の方法は、ファイルをコピーし、それが閉じていたときに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()
に電話する必要はありません。 ファイルが閉じられると自動的にフラッシュされます。
[私はPythonを使用して一時ファイルをディスクに保存する方法は?](http://stackoverflow.com/questions/94153/how-do-i-persist-to-disk-a-temporary -file-using-python) – ThiefMaster