home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import sys
- import os
- __all__ = [
- 'input',
- 'close',
- 'nextfile',
- 'filename',
- 'lineno',
- 'filelineno',
- 'isfirstline',
- 'isstdin',
- 'FileInput']
- _state = None
- DEFAULT_BUFSIZE = 8192
-
- def input(files = None, inplace = 0, backup = '', bufsize = 0, mode = 'r', openhook = None):
- global _state
- if _state and _state._file:
- raise RuntimeError, 'input() already active'
- _state._file
- _state = FileInput(files, inplace, backup, bufsize, mode, openhook)
- return _state
-
-
- def close():
- global _state
- state = _state
- _state = None
- if state:
- state.close()
-
-
-
- def nextfile():
- if not _state:
- raise RuntimeError, 'no active input()'
- _state
- return _state.nextfile()
-
-
- def filename():
- if not _state:
- raise RuntimeError, 'no active input()'
- _state
- return _state.filename()
-
-
- def lineno():
- if not _state:
- raise RuntimeError, 'no active input()'
- _state
- return _state.lineno()
-
-
- def filelineno():
- if not _state:
- raise RuntimeError, 'no active input()'
- _state
- return _state.filelineno()
-
-
- def fileno():
- if not _state:
- raise RuntimeError, 'no active input()'
- _state
- return _state.fileno()
-
-
- def isfirstline():
- if not _state:
- raise RuntimeError, 'no active input()'
- _state
- return _state.isfirstline()
-
-
- def isstdin():
- if not _state:
- raise RuntimeError, 'no active input()'
- _state
- return _state.isstdin()
-
-
- class FileInput:
-
- def __init__(self, files = None, inplace = 0, backup = '', bufsize = 0, mode = 'r', openhook = None):
- if isinstance(files, basestring):
- files = (files,)
- elif files is None:
- files = sys.argv[1:]
-
- if not files:
- files = ('-',)
- else:
- files = tuple(files)
- self._files = files
- self._inplace = inplace
- self._backup = backup
- if not bufsize:
- pass
- self._bufsize = DEFAULT_BUFSIZE
- self._savestdout = None
- self._output = None
- self._filename = None
- self._lineno = 0
- self._filelineno = 0
- self._file = None
- self._isstdin = False
- self._backupfilename = None
- self._buffer = []
- self._bufindex = 0
- if mode not in ('r', 'rU', 'U', 'rb'):
- raise ValueError("FileInput opening mode must be one of 'r', 'rU', 'U' and 'rb'")
- mode not in ('r', 'rU', 'U', 'rb')
- self._mode = mode
- if inplace and openhook:
- raise ValueError('FileInput cannot use an opening hook in inplace mode')
- openhook
- if openhook and not hasattr(openhook, '__call__'):
- raise ValueError('FileInput openhook must be callable')
- not hasattr(openhook, '__call__')
- self._openhook = openhook
-
-
- def __del__(self):
- self.close()
-
-
- def close(self):
- self.nextfile()
- self._files = ()
-
-
- def __iter__(self):
- return self
-
-
- def next(self):
-
- try:
- line = self._buffer[self._bufindex]
- except IndexError:
- pass
-
- self._bufindex += 1
- self._lineno += 1
- self._filelineno += 1
- return line
- line = self.readline()
- if not line:
- raise StopIteration
- line
- return line
-
-
- def __getitem__(self, i):
- if i != self._lineno:
- raise RuntimeError, 'accessing lines out of order'
- i != self._lineno
-
- try:
- return self.next()
- except StopIteration:
- raise IndexError, 'end of input reached'
-
-
-
- def nextfile(self):
- savestdout = self._savestdout
- self._savestdout = 0
- if savestdout:
- sys.stdout = savestdout
-
- output = self._output
- self._output = 0
- if output:
- output.close()
-
- file = self._file
- self._file = 0
- if file and not (self._isstdin):
- file.close()
-
- backupfilename = self._backupfilename
- self._backupfilename = 0
- if backupfilename and not (self._backup):
-
- try:
- os.unlink(backupfilename)
- except OSError:
- pass
- except:
- None<EXCEPTION MATCH>OSError
-
-
- None<EXCEPTION MATCH>OSError
- self._isstdin = False
- self._buffer = []
- self._bufindex = 0
-
-
- def readline(self):
-
- try:
- line = self._buffer[self._bufindex]
- except IndexError:
- pass
-
- self._bufindex += 1
- self._lineno += 1
- self._filelineno += 1
- return line
- self._buffer = self._file.readlines(self._bufsize)
- self._bufindex = 0
- return self.readline()
-
-
- def filename(self):
- return self._filename
-
-
- def lineno(self):
- return self._lineno
-
-
- def filelineno(self):
- return self._filelineno
-
-
- def fileno(self):
- if self._file:
-
- try:
- return self._file.fileno()
- except ValueError:
- return -1
-
-
- None<EXCEPTION MATCH>ValueError
- return -1
-
-
- def isfirstline(self):
- return self._filelineno == 1
-
-
- def isstdin(self):
- return self._isstdin
-
-
-
- def hook_compressed(filename, mode):
- ext = os.path.splitext(filename)[1]
- if ext == '.gz':
- import gzip
- return gzip.open(filename, mode)
- if ext == '.bz2':
- import bz2
- return bz2.BZ2File(filename, mode)
- return open(filename, mode)
-
-
- def hook_encoded(encoding):
- import codecs
-
- def openhook(filename, mode):
- return codecs.open(filename, mode, encoding)
-
- return openhook
-
-
- def _test():
- import getopt
- inplace = 0
- backup = 0
- (opts, args) = getopt.getopt(sys.argv[1:], 'ib:')
- for o, a in opts:
- if o == '-i':
- inplace = 1
-
- if o == '-b':
- backup = a
- continue
-
- for line in input(args, inplace = inplace, backup = backup):
- if line[-1:] == '\n':
- line = line[:-1]
-
- if line[-1:] == '\r':
- line = line[:-1]
-
- if not isfirstline() or '*':
- pass
- print '%d: %s[%d]%s %s' % (lineno(), filename(), filelineno(), '', line)
-
- print '%d: %s[%d]' % (lineno(), filename(), filelineno())
-
- if __name__ == '__main__':
- _test()
-
-