# Temporary file name allocation # # XXX This tries to be not UNIX specific, but I don't know beans about # how to choose a temp directory or filename on MS-DOS or other # systems so it may have to be changed... import os # Parameters that the caller may set to override the defaults tempdir = None template = None # Function to calculate the directory to use def gettempdir(): global tempdir if tempdir == None: try: tempdir = os.environ['TMPDIR'] except (KeyError, AttributeError): if os.name == 'posix': tempdir = '/usr/tmp' # XXX Why not /tmp? else: tempdir = os.getcwd() # XXX Is this OK? return tempdir # Function to calculate a prefix of the filename to use def gettempprefix(): global template if template == None: if os.name == 'posix': template = '@' + `os.getpid()` + '.' else: template = 'tmp' # XXX might choose a better one return template # Counter for generating unique names counter = 0 # User-callable function to return a unique temporary file name def mktemp(): global counter dir = gettempdir() pre = gettempprefix() while 1: counter = counter + 1 file = os.path.join(dir, pre + `counter`) if not os.path.exists(file): return file