Mercurial > cpython-lru_cache-weakref
annotate Lib/tempfile.py @ 3720:b341def4eef8 legacy-trunk
Ignore latex intermediate products.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 26 Jun 1996 19:30:01 +0000 |
| parents | 16ca8f0f3f11 |
| children | 9d8a965de7ec |
| rev | line source |
|---|---|
| 430 | 1 # Temporary file name allocation |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
2 # |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
3 # XXX This tries to be not UNIX specific, but I don't know beans about |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
4 # how to choose a temp directory or filename on MS-DOS or other |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
5 # systems so it may have to be changed... |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
6 |
| 430 | 7 |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
8 import os |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
9 |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
10 |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
11 # Parameters that the caller may set to override the defaults |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
12 |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
13 tempdir = None |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
14 template = None |
| 430 | 15 |
| 16 | |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
17 # Function to calculate the directory to use |
| 430 | 18 |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
19 def gettempdir(): |
|
3647
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
20 global tempdir |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
21 attempdirs = ['/usr/tmp', '/tmp', os.getcwd(), os.curdir] |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
22 if os.environ.has_key('TMPDIR'): |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
23 attempdirs.insert(0, os.environ['TMPDIR']) |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
24 testfile = gettempprefix() + '-*-writetest-*-' |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
25 for dir in attempdirs: |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
26 try: |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
27 filename = os.path.join(dir, testfile) |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
28 fp = open(filename, 'w') |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
29 fp.write('blat') |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
30 fp.close() |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
31 os.unlink(filename) |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
32 tempdir = dir |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
33 break |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
34 except IOError: |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
35 pass |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
36 if tempdir is None: |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
37 msg = "Can't find a usable temporary directory amongst " + `attempdirs` |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
38 raise IOError, msg |
|
16ca8f0f3f11
Be more careful about default temp dir
Guido van Rossum <guido@python.org>
parents:
773
diff
changeset
|
39 return tempdir |
|
586
dbf408918201
Use $TMPDIR if it is set in the environment.
Guido van Rossum <guido@python.org>
parents:
534
diff
changeset
|
40 |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
41 |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
42 # Function to calculate a prefix of the filename to use |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
43 |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
44 def gettempprefix(): |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
45 global template |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
46 if template == None: |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
47 if os.name == 'posix': |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
48 template = '@' + `os.getpid()` + '.' |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
49 else: |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
50 template = 'tmp' # XXX might choose a better one |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
51 return template |
|
586
dbf408918201
Use $TMPDIR if it is set in the environment.
Guido van Rossum <guido@python.org>
parents:
534
diff
changeset
|
52 |
| 430 | 53 |
|
534
96b2128f00ae
Use 'global' instead of struct kludge.
Guido van Rossum <guido@python.org>
parents:
531
diff
changeset
|
54 # Counter for generating unique names |
| 430 | 55 |
|
534
96b2128f00ae
Use 'global' instead of struct kludge.
Guido van Rossum <guido@python.org>
parents:
531
diff
changeset
|
56 counter = 0 |
| 430 | 57 |
| 58 | |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
59 # User-callable function to return a unique temporary file name |
| 430 | 60 |
| 61 def mktemp(): | |
|
534
96b2128f00ae
Use 'global' instead of struct kludge.
Guido van Rossum <guido@python.org>
parents:
531
diff
changeset
|
62 global counter |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
63 dir = gettempdir() |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
64 pre = gettempprefix() |
| 430 | 65 while 1: |
|
773
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
66 counter = counter + 1 |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
67 file = os.path.join(dir, pre + `counter`) |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
68 if not os.path.exists(file): |
|
c721afab0efa
Mostly rewritten to be more flexible and more portable
Guido van Rossum <guido@python.org>
parents:
586
diff
changeset
|
69 return file |
