PythonによるLinuxプログラミングインタフェース(5章 mkstemp)
第5章のP115のテンポラリファイル作成のpythonコード。
#/usr/bin/env #-*- encoding: utf-8 -*- import tempfile import os import time # don't use # os.tmpnam (see: http://docs.python.org/2/library/os.html#os.tmpnam) # os.tempnam (see: http://docs.python.org/2/library/os.html#os.tempnam) # tempfile.mktemp (see: http://docs.python.org/2/library/tempfile.html#tempfile.mktemp) # instead of tempfile.mkstemp def pythonic(): suffix = "XXXXXXX" prefix = "YYYY" # you can change temp path # dir = "/tmp" text = False # mkstemp return fd by os.open() and temp path fd, path = tempfile.mkstemp( suffix=suffix, prefix=prefix, text=text ) if -1 == fd: exit() print("Generated filename was: {0}".format(path)) # if you want to check temp file exist, try following sleep func! # time.sleep(10) os.unlink(path) os.close(fd) if __name__ == '__main__': pythonic()
テンポラリファイル作成には、os.tmpnam, os.tempnam, tempfile.mktempがあるが、tempfile.mkstempを使う。理由は上記コードのリンク先を参照。 テンポラリファイルの場所は、OSによって違うと思う。OSXで実行したら、/tmpではなかった。指定することも出来る。 実際に、ファイルがunlinkする前に作成されてるか確認するには、time.sleepをコメントアウトしてファイルの存在を確認すると、実際にテンポラリファイルが作成されていることがわかる。