Changeset 40658 for titan/mediathek/localhoster/lib/python2.7/fileinput.py
- Timestamp:
- 07/23/17 13:06:08 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
titan/mediathek/localhoster/lib/python2.7/fileinput.py
r40094 r40658 65 65 does not work for MS-DOS 8+3 filesystems. 66 66 67 Performance: this module is unfortunately one of the slower ways of68 processing large numbers of input lines. Nevertheless, a significant69 speed-up has been obtained by using readlines(bufsize) instead of70 readline(). A new keyword argument, bufsize=N, is present on the71 input() function and the FileInput() class to override the default72 buffer size.73 74 67 XXX Possible additions: 75 68 … … 87 80 _state = None 88 81 82 # No longer used 89 83 DEFAULT_BUFSIZE = 8*1024 90 84 … … 208 202 self._inplace = inplace 209 203 self._backup = backup 210 self._bufsize = bufsize or DEFAULT_BUFSIZE211 204 self._savestdout = None 212 205 self._output = None 213 206 self._filename = None 214 self._ lineno = 0207 self._startlineno = 0 215 208 self._filelineno = 0 216 209 self._file = None 217 210 self._isstdin = False 218 211 self._backupfilename = None 219 self._buffer = []220 self._bufindex = 0221 212 # restrict mode argument to reading modes 222 213 if mode not in ('r', 'rU', 'U', 'rb'): … … 243 234 244 235 def next(self): 245 try: 246 line = self._buffer[self._bufindex] 247 except IndexError: 248 pass 249 else: 250 self._bufindex += 1 251 self._lineno += 1 252 self._filelineno += 1 253 return line 254 line = self.readline() 255 if not line: 256 raise StopIteration 257 return line 236 while 1: 237 line = self._readline() 238 if line: 239 self._filelineno += 1 240 return line 241 if not self._file: 242 raise StopIteration 243 self.nextfile() 244 # repeat with next file 258 245 259 246 def __getitem__(self, i): 260 if i != self. _lineno:247 if i != self.lineno(): 261 248 raise RuntimeError, "accessing lines out of order" 262 249 try: … … 278 265 finally: 279 266 file = self._file 280 self._file = 0 267 self._file = None 268 try: 269 del self._readline # restore FileInput._readline 270 except AttributeError: 271 pass 281 272 try: 282 273 if file and not self._isstdin: … … 290 281 291 282 self._isstdin = False 292 self._buffer = []293 self._bufindex = 0294 283 295 284 def readline(self): 296 try: 297 line = self._buffer[self._bufindex] 298 except IndexError: 299 pass 285 while 1: 286 line = self._readline() 287 if line: 288 self._filelineno += 1 289 return line 290 if not self._file: 291 return line 292 self.nextfile() 293 # repeat with next file 294 295 def _readline(self): 296 if not self._files: 297 return "" 298 self._filename = self._files[0] 299 self._files = self._files[1:] 300 self._startlineno = self.lineno() 301 self._filelineno = 0 302 self._file = None 303 self._isstdin = False 304 self._backupfilename = 0 305 if self._filename == '-': 306 self._filename = '<stdin>' 307 self._file = sys.stdin 308 self._isstdin = True 300 309 else: 301 self._bufindex += 1 302 self._lineno += 1 303 self._filelineno += 1 304 return line 305 if not self._file: 306 if not self._files: 307 return "" 308 self._filename = self._files[0] 309 self._files = self._files[1:] 310 self._filelineno = 0 311 self._file = None 312 self._isstdin = False 313 self._backupfilename = 0 314 if self._filename == '-': 315 self._filename = '<stdin>' 316 self._file = sys.stdin 317 self._isstdin = True 310 if self._inplace: 311 self._backupfilename = ( 312 self._filename + (self._backup or os.extsep+"bak")) 313 try: os.unlink(self._backupfilename) 314 except os.error: pass 315 # The next few lines may raise IOError 316 os.rename(self._filename, self._backupfilename) 317 self._file = open(self._backupfilename, self._mode) 318 try: 319 perm = os.fstat(self._file.fileno()).st_mode 320 except OSError: 321 self._output = open(self._filename, "w") 322 else: 323 fd = os.open(self._filename, 324 os.O_CREAT | os.O_WRONLY | os.O_TRUNC, 325 perm) 326 self._output = os.fdopen(fd, "w") 327 try: 328 if hasattr(os, 'chmod'): 329 os.chmod(self._filename, perm) 330 except OSError: 331 pass 332 self._savestdout = sys.stdout 333 sys.stdout = self._output 318 334 else: 319 if self._inplace: 320 self._backupfilename = ( 321 self._filename + (self._backup or os.extsep+"bak")) 322 try: os.unlink(self._backupfilename) 323 except os.error: pass 324 # The next few lines may raise IOError 325 os.rename(self._filename, self._backupfilename) 326 self._file = open(self._backupfilename, self._mode) 327 try: 328 perm = os.fstat(self._file.fileno()).st_mode 329 except OSError: 330 self._output = open(self._filename, "w") 331 else: 332 fd = os.open(self._filename, 333 os.O_CREAT | os.O_WRONLY | os.O_TRUNC, 334 perm) 335 self._output = os.fdopen(fd, "w") 336 try: 337 if hasattr(os, 'chmod'): 338 os.chmod(self._filename, perm) 339 except OSError: 340 pass 341 self._savestdout = sys.stdout 342 sys.stdout = self._output 335 # This may raise IOError 336 if self._openhook: 337 self._file = self._openhook(self._filename, self._mode) 343 338 else: 344 # This may raise IOError 345 if self._openhook: 346 self._file = self._openhook(self._filename, self._mode) 347 else: 348 self._file = open(self._filename, self._mode) 349 self._buffer = self._file.readlines(self._bufsize) 350 self._bufindex = 0 351 if not self._buffer: 352 self.nextfile() 353 # Recursive call 354 return self.readline() 339 self._file = open(self._filename, self._mode) 340 341 self._readline = self._file.readline # hide FileInput._readline 342 return self._readline() 355 343 356 344 def filename(self): … … 358 346 359 347 def lineno(self): 360 return self._ lineno348 return self._startlineno + self._filelineno 361 349 362 350 def filelineno(self):
Note: See TracChangeset
for help on using the changeset viewer.