Changeset 391 for python/trunk/Lib/tempfile.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/tempfile.py
r10 r391 30 30 # Imports. 31 31 32 import io as _io 32 33 import os as _os 33 34 import errno as _errno … … 119 120 def __init__(self): 120 121 self.mutex = _allocate_lock() 121 self.rng = _Random()122 122 self.normcase = _os.path.normcase 123 124 @property 125 def rng(self): 126 cur_pid = _os.getpid() 127 if cur_pid != getattr(self, '_rng_pid', None): 128 self._rng = _Random() 129 self._rng_pid = cur_pid 130 return self._rng 123 131 124 132 def __iter__(self): … … 187 195 filename = _os.path.join(dir, name) 188 196 try: 189 fd = _os.open(filename, flags, 0600) 190 fp = _os.fdopen(fd, 'w') 191 fp.write('blat') 192 fp.close() 193 _os.unlink(filename) 194 del fp, fd 197 fd = _os.open(filename, flags, 0o600) 198 try: 199 try: 200 with _io.open(fd, 'wb', closefd=False) as fp: 201 fp.write(b'blat') 202 finally: 203 _os.close(fd) 204 finally: 205 _os.unlink(filename) 195 206 return dir 196 except (OSError, IOError) ,e:197 if e [0] != _errno.EEXIST:207 except (OSError, IOError) as e: 208 if e.args[0] != _errno.EEXIST: 198 209 break # no point trying more names in this directory 199 210 pass … … 232 243 if e.errno == _errno.EEXIST: 233 244 continue # try again 245 if _os.name == 'nt' and e.errno == _errno.EACCES: 246 # On windows, when a directory with the chosen name already 247 # exists, EACCES error code is returned instead of EEXIST. 248 continue 234 249 raise 235 250 … … 412 427 self.close() 413 428 return result 429 else: 430 def __exit__(self, exc, value, tb): 431 self.file.__exit__(exc, value, tb) 414 432 415 433 … … 537 555 return self._file.closed 538 556 539 @property540 def encoding(self):541 return self._file.encoding542 543 557 def fileno(self): 544 558 self.rollover() … … 553 567 @property 554 568 def mode(self): 555 return self._file.mode 569 try: 570 return self._file.mode 571 except AttributeError: 572 return self._TemporaryFileArgs[0] 556 573 557 574 @property 558 575 def name(self): 559 return self._file.name 560 561 @property 562 def newlines(self): 563 return self._file.newlines 576 try: 577 return self._file.name 578 except AttributeError: 579 return None 564 580 565 581 def next(self): … … 601 617 602 618 def xreadlines(self, *args): 603 return self._file.xreadlines(*args) 619 if hasattr(self._file, 'xreadlines'): # real file 620 return iter(self._file) 621 else: # StringIO() 622 return iter(self._file.readlines(*args))
Note:
See TracChangeset
for help on using the changeset viewer.