blob: db750d4a6e16c9b8f0ef8e72802f416664f6c9ac [file] [log] [blame]
Guido van Rossumeee94981991-11-12 15:38:08 +00001# Temporary file name allocation
Guido van Rossum41f95031992-03-31 19:02:01 +00002#
3# XXX This tries to be not UNIX specific, but I don't know beans about
4# how to choose a temp directory or filename on MS-DOS or other
5# systems so it may have to be changed...
Guido van Rossumeee94981991-11-12 15:38:08 +00006
7
Guido van Rossum41f95031992-03-31 19:02:01 +00008import os
Guido van Rossumeee94981991-11-12 15:38:08 +00009
Guido van Rossumeee94981991-11-12 15:38:08 +000010
Guido van Rossum41f95031992-03-31 19:02:01 +000011# Parameters that the caller may set to override the defaults
Guido van Rossumcff34541992-01-14 18:31:56 +000012
Guido van Rossum41f95031992-03-31 19:02:01 +000013tempdir = None
14template = None
15
16
17# Function to calculate the directory to use
18
19def gettempdir():
20 global tempdir
21 if tempdir == None:
22 try:
23 tempdir = os.environ['TMPDIR']
24 except (KeyError, AttributeError):
25 if os.name == 'posix':
26 tempdir = '/usr/tmp' # XXX Why not /tmp?
27 else:
28 tempdir = os.getcwd() # XXX Is this OK?
29 return tempdir
30
31
32# Function to calculate a prefix of the filename to use
33
34def gettempprefix():
35 global template
36 if template == None:
37 if os.name == 'posix':
38 template = '@' + `os.getpid()` + '.'
39 else:
40 template = 'tmp' # XXX might choose a better one
41 return template
Guido van Rossumcff34541992-01-14 18:31:56 +000042
Guido van Rossumeee94981991-11-12 15:38:08 +000043
Guido van Rossum4a3a41f1991-12-26 13:10:50 +000044# Counter for generating unique names
Guido van Rossumeee94981991-11-12 15:38:08 +000045
Guido van Rossum4a3a41f1991-12-26 13:10:50 +000046counter = 0
Guido van Rossumeee94981991-11-12 15:38:08 +000047
48
Guido van Rossum41f95031992-03-31 19:02:01 +000049# User-callable function to return a unique temporary file name
Guido van Rossumeee94981991-11-12 15:38:08 +000050
51def mktemp():
Guido van Rossum4a3a41f1991-12-26 13:10:50 +000052 global counter
Guido van Rossum41f95031992-03-31 19:02:01 +000053 dir = gettempdir()
54 pre = gettempprefix()
Guido van Rossumeee94981991-11-12 15:38:08 +000055 while 1:
Guido van Rossum41f95031992-03-31 19:02:01 +000056 counter = counter + 1
57 file = os.path.join(dir, pre + `counter`)
58 if not os.path.exists(file):
59 return file