]> granicus.if.org Git - python/commitdiff
Massive changes from SF 589982 (tempfile.py rewrite, by Zack
authorGuido van Rossum <guido@python.org>
Fri, 9 Aug 2002 16:38:32 +0000 (16:38 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 9 Aug 2002 16:38:32 +0000 (16:38 +0000)
Weinberg).  This changes all uses of deprecated tempfile functions to
the recommended ones.

31 files changed:
Demo/pdist/rcslib.py
Demo/pdist/rcvs.py
Demo/pdist/rrcs.py
Demo/scripts/pp.py
Lib/cgitb.py
Lib/distutils/command/bdist_wininst.py
Lib/distutils/util.py
Lib/hotshot/stones.py
Lib/mimetools.py
Lib/pipes.py
Lib/plat-irix5/torgb.py
Lib/plat-irix6/torgb.py
Lib/pydoc.py
Lib/test/pickletester.py
Lib/test/test_anydbm.py
Lib/test/test_binhex.py
Lib/test/test_bsddb.py
Lib/test/test_commands.py
Lib/test/test_dumbdbm.py
Lib/test/test_gzip.py
Lib/test/test_netrc.py
Lib/test/test_pkg.py
Lib/test/test_pkgimport.py
Lib/test/test_uu.py
Lib/test/test_wave.py
Lib/test/test_whichdb.py
Lib/toaiff.py
Lib/urllib.py
Tools/compiler/regrtest.py
Tools/faqwiz/faqwiz.py
Tools/idle/IOBinding.py

index 6d2e313543d9f88aee36e8c4a1448a23f4dd1ce3..4e72766d24205baaebc49a80d878b5971e337db1 100755 (executable)
@@ -143,22 +143,17 @@ class RCS:
         if message and message[-1] != '\n':
             message = message + '\n'
         lockflag = "-u"
-        textfile = None
-        try:
-            if new:
-                textfile = tempfile.mktemp()
-                f = open(textfile, 'w')
-                f.write(message)
-                f.close()
-                cmd = 'ci %s%s -t%s %s %s' % \
-                      (lockflag, rev, textfile, otherflags, name)
-            else:
-                message = regsub.gsub('\([\\"$`]\)', '\\\\\\1', message)
-                cmd = 'ci %s%s -m"%s" %s %s' % \
-                      (lockflag, rev, message, otherflags, name)
-            return self._system(cmd)
-        finally:
-            if textfile: self._remove(textfile)
+        if new:
+            f = tempfile.NamedTemporaryFile()
+            f.write(message)
+            f.flush()
+            cmd = 'ci %s%s -t%s %s %s' % \
+                  (lockflag, rev, f.name, otherflags, name)
+        else:
+            message = regsub.gsub('\([\\"$`]\)', '\\\\\\1', message)
+            cmd = 'ci %s%s -m"%s" %s %s' % \
+                  (lockflag, rev, message, otherflags, name)
+        return self._system(cmd)
 
     # --- Exported support methods ---
 
index 9129c28158dad57e20e56156efeb33006e82fa3f..24036c7721a159d3ce938d4e59190524365e08eb 100755 (executable)
@@ -172,17 +172,13 @@ class MyFile(File):
                if self.lsum == sum:
                        return
                import tempfile
-               tfn = tempfile.mktemp()
-               try:
-                       tf = open(tfn, 'w')
-                       tf.write(data)
-                       tf.close()
-                       print 'diff %s -r%s %s' % (flags, rev, fn)
-                       sts = os.system('diff %s %s %s' % (flags, tfn, fn))
-                       if sts:
-                               print '='*70
-               finally:
-                       remove(tfn)
+               tf = tempfile.NamedTemporaryFile()
+               tf.write(data)
+               tf.flush()
+               print 'diff %s -r%s %s' % (flags, rev, fn)
+               sts = os.system('diff %s %s %s' % (flags, tf.name, fn))
+               if sts:
+                       print '='*70
 
        def commitcheck(self):
                return self.action() != 'C'
index ecb01a29dca9c3bb0a8bc990b7ce35d54e334cd7..a07260c6477f68a0ec3a124b5e3261ad8329cd93 100755 (executable)
@@ -102,17 +102,13 @@ def diff(x, copts, fn):
                flags = flags + ' ' + o + a
        flags = flags[1:]
        data = x.get(fn)
-       tfn = tempfile.mktemp()
-       try:
-               tf = open(tfn, 'w')
-               tf.write(data)
-               tf.close()
-               print 'diff %s -r%s %s' % (flags, x.head(fn), fn)
-               sts = os.system('diff %s %s %s' % (flags, tfn, fn))
-               if sts:
-                       print '='*70
-       finally:
-               remove(tfn)
+       tf = tempfile.NamedTemporaryFile()
+       tf.write(data)
+       tf.flush()
+       print 'diff %s -r%s %s' % (flags, x.head(fn), fn)
+       sts = os.system('diff %s %s %s' % (flags, tf.name, fn))
+       if sts:
+               print '='*70
 
 def same(x, copts, fn, data = None):
        if data is None:
index 24960466e475bf3ad53b1311f65e5cd323526229..64e57ee15fbb7b5e746f7315ccd5502622bdc7a8 100755 (executable)
@@ -120,19 +120,11 @@ for line in SCRIPT:
 program = program + (string.joinfields(epilogue, '\n') + '\n')
 
 import tempfile
-tfn = tempfile.mktemp()
-try:
-       fp = open(tfn, 'w')
-       fp.write(program)
-       fp.close()
-       if DFLAG:
-               import pdb
-               pdb.run('execfile(' + `tfn` + ')')
-       else:
-               execfile(tfn)
-finally:
-       import os
-       try:
-               os.unlink(tfn)
-       except:
-               pass
+fp = tempfile.NamedTemporaryFile()
+fp.write(program)
+fp.flush()
+if DFLAG:
+       import pdb
+       pdb.run('execfile(' + `tfn` + ')')
+else:
+       execfile(tfn)
index b39fd936efab02bc7955543eadd3a833b1c38191..2602d57e7bc5fbf4c02103084cde72f1fd8a0315 100644 (file)
@@ -193,10 +193,10 @@ class Hook:
 
         if self.logdir is not None:
             import os, tempfile
-            name = tempfile.mktemp(['.html', '.txt'][text])
-            path = os.path.join(self.logdir, os.path.basename(name))
+            (fd, name) = tempfile.mkstemp(suffix=['.html', '.txt'][text],
+                                          dir=self.logdir)
             try:
-                file = open(path, 'w')
+                file = os.fdopen(fd, 'w')
                 file.write(doc)
                 file.close()
                 msg = '<p> %s contains the description of this error.' % path
index 71e51bfd379a8adb3abdd7aa033ad1b9c85f89ed..b5383198813bdabd2ca2ba6a962a3cb2159958bf 100644 (file)
@@ -130,8 +130,9 @@ class bdist_wininst (Command):
 
         # And make an archive relative to the root of the
         # pseudo-installation tree.
-        from tempfile import mktemp
-        archive_basename = mktemp()
+        from tempfile import NamedTemporaryFile
+        arc = NamedTemporaryFile(".zip")
+        archive_basename = arc.name[:-4]
         fullname = self.distribution.get_fullname()
         arcname = self.make_archive(archive_basename, "zip",
                                     root_dir=self.bdist_dir)
@@ -139,7 +140,7 @@ class bdist_wininst (Command):
         self.create_exe(arcname, fullname, self.bitmap)
         # remove the zip-file again
         log.debug("removing temporary file '%s'", arcname)
-        os.remove(arcname)
+        arc.close()
 
         if not self.keep_temp:
             remove_tree(self.bdist_dir, dry_run=self.dry_run)
index 23c29ebb2ac4d7894fdad350b4847dc462844be7..d9c622487ce4d8af86520d9eb5e8cae57e5e738f 100644 (file)
@@ -359,11 +359,11 @@ def byte_compile (py_files,
     # "Indirect" byte-compilation: write a temporary script and then
     # run it with the appropriate flags.
     if not direct:
-        from tempfile import mktemp
-        script_name = mktemp(".py")
+        from tempfile import mkstemp
+        (script_fd, script_name) = mkstemp(".py")
         log.info("writing byte-compilation script '%s'", script_name)
         if not dry_run:
-            script = open(script_name, "w")
+            script = os.fdopen(script_fd, "w")
 
             script.write("""\
 from distutils.util import byte_compile
index 5a029d5dc03f4abb7ac4c5d5554311677ea5e4b3..e171fbc59e4ec7b49bc964e9a10bc55694977ec3 100644 (file)
@@ -8,12 +8,10 @@ import test.pystone
 
 if sys.argv[1:]:
     logfile = sys.argv[1]
-    cleanup = 0
 else:
     import tempfile
-    logfile = tempfile.mktemp()
-    cleanup = 1
-
+    logf = tempfile.NamedTemporaryFile()
+    logfile = logf.name
 
 p = hotshot.Profile(logfile)
 benchtime, stones = p.runcall(test.pystone.pystones)
@@ -24,8 +22,6 @@ print "Pystone(%s) time for %d passes = %g" % \
 print "This machine benchmarks at %g pystones/second" % stones
 
 stats = hotshot.stats.load(logfile)
-if cleanup:
-    os.unlink(logfile)
 stats.strip_dirs()
 stats.sort_stats('time', 'calls')
 try:
index f97787aa6d7aa2d701289d88a3739ffb39614893..f1e20d444f41868deb9fb059ced0273e8e3ce7f5 100644 (file)
@@ -202,8 +202,8 @@ def pipeto(input, command):
     pipe.close()
 
 def pipethrough(input, command, output):
-    tempname = tempfile.mktemp()
-    temp = open(tempname, 'w')
+    (fd, tempname) = tempfile.mkstemp()
+    temp = os.fdopen(fd, 'w')
     copyliteral(input, temp)
     temp.close()
     pipe = os.popen(command + ' <' + tempname, 'r')
index b565654171e928e1e4b5d32ef633ac21a35fd660..9de22e10022246f4d40c1033025d694f004b4c30 100644 (file)
@@ -225,7 +225,8 @@ def makepipeline(infile, steps, outfile):
         lkind = list[i-1][2]
         rkind = list[i][2]
         if lkind[1] == 'f' or rkind[0] == 'f':
-            temp = tempfile.mktemp()
+            (fd, temp) = tempfile.mkstemp()
+            os.close(fd)
             garbage.append(temp)
             list[i-1][-1] = list[i][0] = temp
     #
index 7cc3b47cf0683074c2d478dcaea5903696c498d7..c9fee0d9d6301450be358ce5f56ed213bc3bd587 100755 (executable)
@@ -70,7 +70,8 @@ def torgb(filename):
 
 def _torgb(filename, temps):
        if filename[-2:] == '.Z':
-               fname = tempfile.mktemp()
+               (fd, fname) = tempfile.mkstemp()
+               os.close(fd)
                temps.append(fname)
                sts = uncompress.copy(filename, fname)
                if sts:
@@ -91,7 +92,8 @@ def _torgb(filename, temps):
        if ftype is None or not table.has_key(ftype):
                raise error, \
                        filename + ': unsupported image file type ' + `ftype`
-       temp = tempfile.mktemp()
+       (fd, temp) = tempfile.mktemp()
+       os.close(fd)
        sts = table[ftype].copy(fname, temp)
        if sts:
                raise error, filename + ': conversion to rgb failed'
index 7cc3b47cf0683074c2d478dcaea5903696c498d7..c9fee0d9d6301450be358ce5f56ed213bc3bd587 100644 (file)
@@ -70,7 +70,8 @@ def torgb(filename):
 
 def _torgb(filename, temps):
        if filename[-2:] == '.Z':
-               fname = tempfile.mktemp()
+               (fd, fname) = tempfile.mkstemp()
+               os.close(fd)
                temps.append(fname)
                sts = uncompress.copy(filename, fname)
                if sts:
@@ -91,7 +92,8 @@ def _torgb(filename, temps):
        if ftype is None or not table.has_key(ftype):
                raise error, \
                        filename + ': unsupported image file type ' + `ftype`
-       temp = tempfile.mktemp()
+       (fd, temp) = tempfile.mktemp()
+       os.close(fd)
        sts = table[ftype].copy(fname, temp)
        if sts:
                raise error, filename + ': conversion to rgb failed'
index 0c46c8e9eaaea47fe41d7091409af2c95a4d30c5..e2cd846971f7a76ae5b5b739aeb18b875a67abc8 100755 (executable)
@@ -1203,8 +1203,8 @@ def getpager():
         return lambda text: pipepager(text, 'less')
 
     import tempfile
-    filename = tempfile.mktemp()
-    open(filename, 'w').close()
+    (fd, filename) = tempfile.mkstemp()
+    os.close(fd)
     try:
         if hasattr(os, 'system') and os.system('more %s' % filename) == 0:
             return lambda text: pipepager(text, 'more')
@@ -1229,8 +1229,8 @@ def pipepager(text, cmd):
 def tempfilepager(text, cmd):
     """Page through text by invoking a program on a temporary file."""
     import tempfile
-    filename = tempfile.mktemp()
-    file = open(filename, 'w')
+    (fd, filename) = tempfile.mkstemp()
+    file = os.fdopen(fd, 'w')
     file.write(text)
     file.close()
     try:
index 870a8d65695b57795a89bb3c7e8dcb7b838ab0d0..eb97a9cfa0aaee85b54a6a8f480bec8e32a88108 100644 (file)
@@ -1,5 +1,5 @@
 import unittest
-from test.test_support import TestFailed, have_unicode
+from test.test_support import TestFailed, have_unicode, TESTFN
 
 class C:
     def __cmp__(self, other):
@@ -269,17 +269,19 @@ class AbstractPickleTests(unittest.TestCase):
 class AbstractPickleModuleTests(unittest.TestCase):
 
     def test_dump_closed_file(self):
-        import tempfile, os
-        fn = tempfile.mktemp()
-        f = open(fn, "w")
-        f.close()
-        self.assertRaises(ValueError, self.module.dump, 123, f)
-        os.remove(fn)
+        import os
+        f = open(TESTFN, "w")
+        try:
+            f.close()
+            self.assertRaises(ValueError, self.module.dump, 123, f)
+        finally:
+            os.remove(TESTFN)
 
     def test_load_closed_file(self):
-        import tempfile, os
-        fn = tempfile.mktemp()
-        f = open(fn, "w")
-        f.close()
-        self.assertRaises(ValueError, self.module.dump, 123, f)
-        os.remove(fn)
+        import os
+        f = open(TESTFN, "w")
+        try:
+            f.close()
+            self.assertRaises(ValueError, self.module.dump, 123, f)
+        finally:
+            os.remove(TESTFN)
index 54d278393e32e7abb50791a5db336d079d86f92e..0cdc2c321d0c911cab464bf4e54e0ab9f0af9118 100644 (file)
@@ -6,11 +6,10 @@
 import os
 import unittest
 import anydbm
-import tempfile
 import glob
 from test import test_support
 
-_fname = tempfile.mktemp()
+_fname = test_support.TESTFN
 
 def _delete_files():
     # we don't know the precise name the underlying database uses
index 2de35ce301d2091657645e6a184a78e4c9b37dc2..2f89703b44a242aff8cf8a1bb0db3773cb60efb5 100755 (executable)
@@ -6,7 +6,6 @@
 """
 import binhex
 import os
-import tempfile
 import unittest
 from test import test_support
 
@@ -14,8 +13,8 @@ from test import test_support
 class BinHexTestCase(unittest.TestCase):
 
     def setUp(self):
-        self.fname1 = tempfile.mktemp()
-        self.fname2 = tempfile.mktemp()
+        self.fname1 = test_support.TESTFN + "1"
+        self.fname2 = test_support.TESTFN + "2"
 
     def tearDown(self):
         try: os.unlink(self.fname1)
index 5cd39585cdba3b81aef6ee5bce7adf3ebe13e4b3..aa58ef8ef7f6af0afd389d30a99095082011c8c4 100755 (executable)
@@ -5,8 +5,7 @@
 import os
 import bsddb
 import dbhash # Just so we know it's imported
-import tempfile
-from test.test_support import verbose, verify
+from test.test_support import verbose, verify, TESTFN
 
 def test(openmethod, what, ondisk=1):
 
@@ -14,7 +13,7 @@ def test(openmethod, what, ondisk=1):
         print '\nTesting: ', what, (ondisk and "on disk" or "in memory")
 
     if ondisk:
-        fname = tempfile.mktemp()
+        fname = TESTFN
     else:
         fname = None
     f = openmethod(fname, 'c')
index 5ea08bc8b4d97192cf5fa20fd0412839eeaaf581..56d4e7c7a22416886d52e4755f2b5cc486118bf9 100644 (file)
@@ -24,10 +24,17 @@ class CommandTests(unittest.TestCase):
         self.assertEquals(getoutput('echo xyzzy'), 'xyzzy')
         self.assertEquals(getstatusoutput('echo xyzzy'), (0, 'xyzzy'))
 
-        # we use mktemp in the next line to get a filename which we
-        # _know_ won't exist.  This is guaranteed to fail.
-        status, output = getstatusoutput('cat ' + tempfile.mktemp())
-        self.assertNotEquals(status, 0)
+        # we use mkdtemp in the next line to create an empty directory
+        # under our exclusive control; from that, we can invent a pathname
+        # that we _know_ won't exist.  This is guaranteed to fail.
+        try:
+            dir = tempfile.mkdtemp()
+            name = os.path.join(dir, "foo")
+
+            status, output = getstatusoutput('cat ' + name)
+            self.assertNotEquals(status, 0)
+        finally:
+            os.rmdir(dir)
 
     def test_getstatus(self):
         # This pattern should match 'ls -ld /.' on any posix
index 7417f12eb68c9d42f2597429627f33275e2ad2fd..4d1bc0e5ed56e574a9a50768d10a1f762f9cb7e3 100644 (file)
@@ -6,10 +6,9 @@
 import os
 import unittest
 import dumbdbm
-import tempfile
 from test import test_support
 
-_fname = tempfile.mktemp()
+_fname = test_support.TESTFN
 
 def _delete_files():
     for ext in [".dir", ".dat", ".bak"]:
index 9156d9ed621d2135c7c05089cf14af6d3bf623ae..bb4ed492b6f12fb70c43e3495542c8befa65493f 100644 (file)
@@ -1,8 +1,8 @@
-from test.test_support import verify
+from test.test_support import verify, TESTFN
 import sys, os
-import gzip, tempfile
+import gzip
 
-filename = tempfile.mktemp()
+filename = TESTFN
 
 data1 = """  int length=DEFAULTALLOC, err = Z_OK;
   PyObject *RetVal;
index 034b10550f4306fdc961ff023b27cb0d1e131c20..15e7e681343c156a0ed2c74cb7f04892c238630c 100644 (file)
@@ -1,5 +1,5 @@
 
-import netrc, os, tempfile, unittest
+import netrc, os, unittest
 from test import test_support
 
 TEST_NETRC = """
@@ -17,7 +17,7 @@ default login log2 password pass2
 
 """
 
-temp_filename = tempfile.mktemp()
+temp_filename = test_support.TESTFN
 
 class NetrcTestCase(unittest.TestCase):
 
index 224cefade57f528c144fde5eac43da65282f2849..7dec2e95e620133695b68b940d08e0c30ad7f243 100644 (file)
@@ -8,7 +8,8 @@ from test.test_support import verify, verbose, TestFailed
 # Helpers to create and destroy hierarchies.
 
 def mkhier(root, descr):
-    mkdir(root)
+    if not os.path.isdir(root):
+        mkdir(root)
     for name, contents in descr:
         comps = name.split()
         fullname = root
@@ -52,18 +53,17 @@ def fixdir(lst):
 # Helper to run a test
 
 def runtest(hier, code):
-    root = tempfile.mktemp()
+    root = tempfile.mkdtemp()
     mkhier(root, hier)
     savepath = sys.path[:]
-    codefile = tempfile.mktemp()
-    f = open(codefile, "w")
-    f.write(code)
-    f.close()
+    codefile = tempfile.NamedTemporaryFile()
+    codefile.write(code)
+    codefile.flush()
     try:
         sys.path.insert(0, root)
         if verbose: print "sys.path =", sys.path
         try:
-            execfile(codefile, globals(), {})
+            execfile(codefile.name, globals(), {})
         except:
             traceback.print_exc(file=sys.stdout)
     finally:
@@ -72,7 +72,6 @@ def runtest(hier, code):
             cleanout(root)
         except (os.error, IOError):
             pass
-        os.remove(codefile)
 
 # Test descriptions
 
index 523ba5a235399a24482c2b3335f13b3acfe15637..1343173cc9e569dfa0a69ce85882b8dd3543d77e 100644 (file)
@@ -17,8 +17,7 @@ class TestImport(unittest.TestCase):
                 del sys.modules[module_name]
 
     def setUp(self):
-        self.test_dir = tempfile.mktemp()
-        os.mkdir(self.test_dir)
+        self.test_dir = tempfile.mkdtemp()
         sys.path.append(self.test_dir)
         self.package_dir = os.path.join(self.test_dir,
                                         self.package_name)
index 75d11080c03f6663f5bea9b1cd3cbad8dcf2a080..bb553a151ae78ea81c39404cb7e937548c2132b5 100644 (file)
@@ -124,8 +124,7 @@ except uu.Error, e:
     verify(str(e) == 'No valid begin line found in input file')
 
 # Test to verify that decode() will refuse to overwrite an existing file
-import tempfile
-outfile = tempfile.mktemp()
+outfile = TESTFN + "out"
 inp = StringIO('Here is a message to be uuencoded')
 out = StringIO()
 uu.encode(inp, out, outfile)
index a0e913c0f4ee87eef7f2601669fcc6427364ce8e..1a6ff5c4e74063d51d2267a596bea5874e8bda5f 100644 (file)
@@ -1,5 +1,5 @@
-from test.test_support import TestFailed
-import os, tempfile
+from test.test_support import TestFailed, TESTFN
+import os
 import wave
 
 def check(t, msg=None):
@@ -11,9 +11,7 @@ sampwidth = 2
 framerate = 8000
 nframes = 100
 
-testfile = tempfile.mktemp()
-
-f = wave.open(testfile, 'wb')
+f = wave.open(TESTFN, 'wb')
 f.setnchannels(nchannels)
 f.setsampwidth(sampwidth)
 f.setframerate(framerate)
@@ -22,7 +20,7 @@ output = '\0' * nframes * nchannels * sampwidth
 f.writeframes(output)
 f.close()
 
-f = wave.open(testfile, 'rb')
+f = wave.open(TESTFN, 'rb')
 check(nchannels == f.getnchannels(), "nchannels")
 check(sampwidth == f.getsampwidth(), "sampwidth")
 check(framerate == f.getframerate(), "framerate")
@@ -31,4 +29,4 @@ input = f.readframes(nframes)
 check(input == output, "data")
 f.close()
 
-os.remove(testfile)
+os.remove(TESTFN)
index 21f1588b1a3cf6287f0f6cb25b028948691aa87e..2f1a3a2f092065b111ac4bd61abfa8591a90ede9 100644 (file)
@@ -11,7 +11,7 @@ import anydbm
 import tempfile
 import glob
 
-_fname = tempfile.mktemp()
+_fname = test.test_support.TESTFN
 
 def _delete_files():
     # we don't know the precise name the underlying database uses
index cf0bfc8c863f87453c147bd5d0a1d34bcee478c0..35fbebb5df414d06745756faa0c0a5de046a8a23 100644 (file)
@@ -75,7 +75,8 @@ def toaiff(filename):
 
 def _toaiff(filename, temps):
     if filename[-2:] == '.Z':
-        fname = tempfile.mktemp()
+        (fd, fname) = tempfile.mkstemp()
+        os.close(fd)
         temps.append(fname)
         sts = uncompress.copy(filename, fname)
         if sts:
@@ -98,7 +99,8 @@ def _toaiff(filename, temps):
     if ftype is None or not ftype in table:
         raise error, \
                 filename + ': unsupported audio file type ' + `ftype`
-    temp = tempfile.mktemp()
+    (fd, temp) = tempfile.mktemp()
+    os.close(fd)
     temps.append(temp)
     sts = table[ftype].copy(fname, temp)
     if sts:
index 4d686b911ba15a917fb6fab5e41b1ff61bdb1571..d367dd8677ed38ae9a2410bef023f3b81d1d31a3 100644 (file)
@@ -212,19 +212,21 @@ class URLopener:
                 pass
         fp = self.open(url, data)
         headers = fp.info()
-        if not filename:
+        if filename:
+            tfp = open(filename, 'wb')
+        else:
             import tempfile
             garbage, path = splittype(url)
             garbage, path = splithost(path or "")
             path, garbage = splitquery(path or "")
             path, garbage = splitattr(path or "")
             suffix = os.path.splitext(path)[1]
-            filename = tempfile.mktemp(suffix)
+            (fd, filename) = tempfile.mkstemp(suffix)
             self.__tempfiles.append(filename)
+            tfp = os.open(fd, 'wb')
         result = filename, headers
         if self.tempcache is not None:
             self.tempcache[url] = result
-        tfp = open(filename, 'wb')
         bs = 1024*8
         size = -1
         blocknum = 1
index aae0ec255ddb81dcc94d3052307d628210986817..def07c2faab6c659da10e97812eec750564dc2ec 100644 (file)
@@ -15,15 +15,13 @@ import test
 import tempfile
 
 def copy_test_suite():
-    dest = tempfile.mktemp()
-    os.mkdir(dest)
+    dest = tempfile.mkdtemp()
     os.system("cp -r %s/* %s" % (test.__path__[0], dest))
     print "Creating copy of test suite in", dest
     return dest
 
 def copy_library():
-    dest = tempfile.mktemp()
-    os.mkdir(dest)
+    dest = tempfile.mkdtemp()
     libdir = os.path.split(test.__path__[0])[0]
     print "Found standard library in", libdir
     print "Creating copy of standard library in", dest
index 638da17b47f557147338ca51e9783bdc8beb80ac..2e2a8b538e220ac576b31e3c4eb8e8007c43c98b 100644 (file)
@@ -807,19 +807,19 @@ class FaqWizard:
         f.close()
 
         import tempfile
-        tfn = tempfile.mktemp()
-        f = open(tfn, 'w')
-        emit(LOGHEADER, self.ui, os.environ, date=date, _file=f)
-        f.close()
+        tf = tempfile.NamedTemporaryFile()
+        emit(LOGHEADER, self.ui, os.environ, date=date, _file=tfn)
+        tf.flush()
+        tf.seek(0)
 
-        command = interpolate(SH_CHECKIN, file=file, tfn=tfn)
+        command = interpolate(SH_CHECKIN, file=file, tfn=tf.name)
         log("\n\n" + command)
         p = os.popen(command)
         output = p.read()
         sts = p.close()
         log("output: " + output)
         log("done: " + str(sts))
-        log("TempFile:\n" + open(tfn).read() + "end")
+        log("TempFile:\n" + tf.read() + "end")
         
         if not sts:
             self.prologue(T_COMMITTED)
index 0ea4524ccda76e56e2198724cb002ce2571d875c..d80e53ceae0499d56aabd51125482275f1ebcf88 100644 (file)
@@ -280,9 +280,11 @@ class IOBinding:
         if self.get_saved():
             filename = self.filename
         else:
-            filename = tempfilename = tempfile.mktemp()
+            (tfd, tfn) = tempfile.mkstemp()
+            os.close(tfd)
+            filename = tfn
             if not self.writefile(filename):
-                os.unlink(tempfilename)
+                os.unlink(tfn)
                 return "break"
         edconf = idleconf.getsection('EditorWindow')
         command = edconf.get('print-command')