Mercurial > cpython-lru_cache-weakref
annotate Lib/fileinput.py @ 84007:dbfbdf2b5c19 3.3
Fix #17967: For ftp urls CWD to target instead of hopping to each directory
towards target. This fixes a bug where target is accessible, but parent
directories are restricted.
| author | Senthil Kumaran <senthil@uthcode.com> |
|---|---|
| date | Sat, 01 Jun 2013 08:27:06 -0700 |
| parents | c2b3e8b437a4 |
| children | 0760b58526ba 47f98a550d42 |
| rev | line source |
|---|---|
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 """Helper class to quickly write a loop over all standard input files. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 Typical use is: |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 import fileinput |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 for line in fileinput.input(): |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 process(line) |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 This iterates over the lines of all files listed in sys.argv[1:], |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 defaulting to sys.stdin if the list is empty. If a filename is '-' it |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 is also replaced by sys.stdin. To specify an alternative list of |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 filenames, pass it as the argument to input(). A single file name is |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 also allowed. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 Functions filename(), lineno() return the filename and cumulative line |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 number of the line that has just been read; filelineno() returns its |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 line number in the current file; isfirstline() returns true iff the |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 line just read is the first line of its file; isstdin() returns true |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 iff the line was read from sys.stdin. Function nextfile() closes the |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 current file so that the next iteration will read the first line from |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 the next file (if any); lines not read from the file will not count |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 towards the cumulative line count; the filename is not changed until |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 after the first line of the next file has been read. Function close() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 closes the sequence. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 Before any lines have been read, filename() returns None and both line |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 numbers are zero; nextfile() has no effect. After all lines have been |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 read, filename() and the line number functions return the values |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 pertaining to the last line read; nextfile() has no effect. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 |
|
36595
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
31 All files are opened in text mode by default, you can override this by |
|
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
32 setting the mode parameter to input() or FileInput.__init__(). |
|
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
33 If an I/O error occurs during opening or reading a file, the IOError |
|
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
34 exception is raised. |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 If sys.stdin is used more than once, the second and further use will |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 return no lines, except perhaps for interactive use, or if it has been |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 explicitly reset (e.g. using sys.stdin.seek(0)). |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 Empty files are opened and immediately closed; the only time their |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 presence in the list of filenames is noticeable at all is when the |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 last file opened is empty. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 It is possible that the last line of a file doesn't end in a newline |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 character; otherwise lines are returned including the trailing |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 newline. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 Class FileInput is the implementation; its methods filename(), |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 lineno(), fileline(), isfirstline(), isstdin(), nextfile() and close() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 correspond to the functions in the module. In addition it has a |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 readline() method which returns the next input line, and a |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 __getitem__() method which implements the sequence behavior. The |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 sequence must be accessed in strictly sequential order; sequence |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 access and readline() cannot be mixed. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 Optional in-place filtering: if the keyword argument inplace=1 is |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 passed to input() or to the FileInput constructor, the file is moved |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 to a backup file and standard output is directed to the input file. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 This makes it possible to write a filter that rewrites its input file |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 in place. If the keyword argument backup=".<some extension>" is also |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 given, it specifies the extension for the backup file, and the backup |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 file remains around; by default, the extension is ".bak" and it is |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 deleted when the output file is closed. In-place filtering is |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 disabled when standard input is read. XXX The current implementation |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 does not work for MS-DOS 8+3 filesystems. |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
67 Performance: this module is unfortunately one of the slower ways of |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
68 processing large numbers of input lines. Nevertheless, a significant |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
69 speed-up has been obtained by using readlines(bufsize) instead of |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
70 readline(). A new keyword argument, bufsize=N, is present on the |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
71 input() function and the FileInput() class to override the default |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
72 buffer size. |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
73 |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 XXX Possible additions: |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 - optional getopt argument processing |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 - isatty() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 - read(), read(size), even readlines() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 """ |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
81 |
|
23697
c0e8c07ae1d6
Replace obsolete stat module constants with
Walter Dörwald <walter@livinglogic.de>
parents:
23521
diff
changeset
|
82 import sys, os |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 |
|
54169
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
84 __all__ = ["input", "close", "nextfile", "filename", "lineno", "filelineno", |
|
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
85 "isfirstline", "isstdin", "FileInput"] |
| 16072 | 86 |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 _state = None |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
89 DEFAULT_BUFSIZE = 8*1024 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
90 |
|
54169
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
91 def input(files=None, inplace=False, backup="", bufsize=0, |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
92 mode="r", openhook=None): |
|
54169
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
93 """input(files=None, inplace=False, backup="", bufsize=0, \ |
|
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
94 mode="r", openhook=None) |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
95 |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
96 Create an instance of the FileInput class. The instance will be used |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
97 as global state for the functions of this module, and is also returned |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
98 to use during iteration. The parameters to this function will be passed |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
99 along to the constructor of the FileInput class. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
100 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 global _state |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
102 if _state and _state._file: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
103 raise RuntimeError("input() already active") |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
104 _state = FileInput(files, inplace, backup, bufsize, mode, openhook) |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
105 return _state |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
106 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 def close(): |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
108 """Close the sequence.""" |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
109 global _state |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
110 state = _state |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
111 _state = None |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 if state: |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
113 state.close() |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 def nextfile(): |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
116 """ |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
117 Close the current file so that the next iteration will read the first |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
118 line from the next file (if any); lines not read from the file will |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
119 not count towards the cumulative line count. The filename is not |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
120 changed until after the first line of the next file has been read. |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
121 Before the first line has been read, this function has no effect; |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
122 it cannot be used to skip the first file. After the last line of the |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
123 last file has been read, this function has no effect. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
124 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
125 if not _state: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
126 raise RuntimeError("no active input()") |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
127 return _state.nextfile() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
128 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
129 def filename(): |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
130 """ |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
131 Return the name of the file currently being read. |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
132 Before the first line has been read, returns None. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
133 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
134 if not _state: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
135 raise RuntimeError("no active input()") |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
136 return _state.filename() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
137 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
138 def lineno(): |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
139 """ |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
140 Return the cumulative line number of the line that has just been read. |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
141 Before the first line has been read, returns 0. After the last line |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
142 of the last file has been read, returns the line number of that line. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
143 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
144 if not _state: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
145 raise RuntimeError("no active input()") |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
146 return _state.lineno() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
147 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
148 def filelineno(): |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
149 """ |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
150 Return the line number in the current file. Before the first line |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
151 has been read, returns 0. After the last line of the last file has |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
152 been read, returns the line number of that line within the file. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
153 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
154 if not _state: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
155 raise RuntimeError("no active input()") |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 return _state.filelineno() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 |
|
36594
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
158 def fileno(): |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
159 """ |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
160 Return the file number of the current file. When no file is currently |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
161 opened, returns -1. |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
162 """ |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
163 if not _state: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
164 raise RuntimeError("no active input()") |
|
36594
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
165 return _state.fileno() |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
166 |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
167 def isfirstline(): |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
168 """ |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
169 Returns true the line just read is the first line of its file, |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
170 otherwise returns false. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
171 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
172 if not _state: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
173 raise RuntimeError("no active input()") |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
174 return _state.isfirstline() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
175 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
176 def isstdin(): |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
177 """ |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
178 Returns true if the last line was read from sys.stdin, |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
179 otherwise returns false. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
180 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
181 if not _state: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
182 raise RuntimeError("no active input()") |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
183 return _state.isstdin() |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
184 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
185 class FileInput: |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
186 """class FileInput([files[, inplace[, backup[, mode[, openhook]]]]]) |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
187 |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
188 Class FileInput is the implementation of the module; its methods |
|
36594
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
189 filename(), lineno(), fileline(), isfirstline(), isstdin(), fileno(), |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
190 nextfile() and close() correspond to the functions of the same name |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
191 in the module. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
192 In addition it has a readline() method which returns the next |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
193 input line, and a __getitem__() method which implements the |
|
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
194 sequence behavior. The sequence must be accessed in strictly |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23455
diff
changeset
|
195 sequential order; random access and readline() cannot be mixed. |
|
23455
68c776ba5ea5
Added docstrings excerpted from Python Library Reference.
Raymond Hettinger <python@rcn.com>
parents:
23075
diff
changeset
|
196 """ |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
197 |
|
54169
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
198 def __init__(self, files=None, inplace=False, backup="", bufsize=0, |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
199 mode="r", openhook=None): |
|
43577
ace45b361e87
Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents:
43020
diff
changeset
|
200 if isinstance(files, str): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
201 files = (files,) |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
202 else: |
|
12340
e2620aab9f2d
Implement suggestion from Lawrence Kesteloot in PR#280, to change the
Guido van Rossum <guido@python.org>
parents:
11387
diff
changeset
|
203 if files is None: |
|
e2620aab9f2d
Implement suggestion from Lawrence Kesteloot in PR#280, to change the
Guido van Rossum <guido@python.org>
parents:
11387
diff
changeset
|
204 files = sys.argv[1:] |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
205 if not files: |
|
12340
e2620aab9f2d
Implement suggestion from Lawrence Kesteloot in PR#280, to change the
Guido van Rossum <guido@python.org>
parents:
11387
diff
changeset
|
206 files = ('-',) |
|
e2620aab9f2d
Implement suggestion from Lawrence Kesteloot in PR#280, to change the
Guido van Rossum <guido@python.org>
parents:
11387
diff
changeset
|
207 else: |
|
e2620aab9f2d
Implement suggestion from Lawrence Kesteloot in PR#280, to change the
Guido van Rossum <guido@python.org>
parents:
11387
diff
changeset
|
208 files = tuple(files) |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
209 self._files = files |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
210 self._inplace = inplace |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
211 self._backup = backup |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
212 self._bufsize = bufsize or DEFAULT_BUFSIZE |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
213 self._savestdout = None |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
214 self._output = None |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
215 self._filename = None |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
216 self._lineno = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
217 self._filelineno = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
218 self._file = None |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22595
diff
changeset
|
219 self._isstdin = False |
|
8687
fd49ed65cd20
Add missing initializer for self._backupfilename. Due to Ralph Butler.
Guido van Rossum <guido@python.org>
parents:
7755
diff
changeset
|
220 self._backupfilename = None |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
221 self._buffer = [] |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
222 self._bufindex = 0 |
|
36595
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
223 # restrict mode argument to reading modes |
|
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
224 if mode not in ('r', 'rU', 'U', 'rb'): |
|
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
225 raise ValueError("FileInput opening mode must be one of " |
|
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
226 "'r', 'rU', 'U' and 'rb'") |
|
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
227 self._mode = mode |
|
73165
8e57b5d8f58f
Closes #13258: Use callable() built-in in the standard library.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
63379
diff
changeset
|
228 if openhook: |
|
8e57b5d8f58f
Closes #13258: Use callable() built-in in the standard library.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
63379
diff
changeset
|
229 if inplace: |
|
8e57b5d8f58f
Closes #13258: Use callable() built-in in the standard library.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
63379
diff
changeset
|
230 raise ValueError("FileInput cannot use an opening hook in inplace mode") |
|
8e57b5d8f58f
Closes #13258: Use callable() built-in in the standard library.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
63379
diff
changeset
|
231 if not callable(openhook): |
|
8e57b5d8f58f
Closes #13258: Use callable() built-in in the standard library.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
63379
diff
changeset
|
232 raise ValueError("FileInput openhook must be callable") |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
233 self._openhook = openhook |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
234 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
235 def __del__(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
236 self.close() |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
237 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
238 def close(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
239 self.nextfile() |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
240 self._files = () |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
241 |
|
63379
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
54169
diff
changeset
|
242 def __enter__(self): |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
54169
diff
changeset
|
243 return self |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
54169
diff
changeset
|
244 |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
54169
diff
changeset
|
245 def __exit__(self, type, value, traceback): |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
54169
diff
changeset
|
246 self.close() |
|
ab89d0f52a7f
#1286: allow using fileinput.FileInput as context manager.
Georg Brandl <georg@python.org>
parents:
54169
diff
changeset
|
247 |
|
22595
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
248 def __iter__(self): |
|
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
249 return self |
|
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
250 |
|
41501
0c5019afc55b
PEP 3114: rename .next() to .__next__() and add next() builtin.
Georg Brandl <georg@python.org>
parents:
40775
diff
changeset
|
251 def __next__(self): |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
252 try: |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
253 line = self._buffer[self._bufindex] |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
254 except IndexError: |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
255 pass |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
256 else: |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
257 self._bufindex += 1 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
258 self._lineno += 1 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
259 self._filelineno += 1 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
260 return line |
|
22595
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
261 line = self.readline() |
|
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
262 if not line: |
|
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
263 raise StopIteration |
|
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
264 return line |
|
23075
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22867
diff
changeset
|
265 |
|
22595
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
266 def __getitem__(self, i): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
267 if i != self._lineno: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
268 raise RuntimeError("accessing lines out of order") |
|
22595
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
269 try: |
|
41501
0c5019afc55b
PEP 3114: rename .next() to .__next__() and add next() builtin.
Georg Brandl <georg@python.org>
parents:
40775
diff
changeset
|
270 return self.__next__() |
|
22595
204d46fc54f6
Implement iterator protocol.
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
20654
diff
changeset
|
271 except StopIteration: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42622
diff
changeset
|
272 raise IndexError("end of input reached") |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
273 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
274 def nextfile(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
275 savestdout = self._savestdout |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
276 self._savestdout = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
277 if savestdout: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
278 sys.stdout = savestdout |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
279 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
280 output = self._output |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
281 self._output = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
282 if output: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
283 output.close() |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
284 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
285 file = self._file |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
286 self._file = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
287 if file and not self._isstdin: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
288 file.close() |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
289 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
290 backupfilename = self._backupfilename |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
291 self._backupfilename = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
292 if backupfilename and not self._backup: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
293 try: os.unlink(backupfilename) |
|
24807
685cd52c4c43
tightening up a few except: clauses
Skip Montanaro <skip@pobox.com>
parents:
23697
diff
changeset
|
294 except OSError: pass |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
295 |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22595
diff
changeset
|
296 self._isstdin = False |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
297 self._buffer = [] |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
298 self._bufindex = 0 |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
299 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
300 def readline(self): |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
301 try: |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
302 line = self._buffer[self._bufindex] |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
303 except IndexError: |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
304 pass |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
305 else: |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
306 self._bufindex += 1 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
307 self._lineno += 1 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
308 self._filelineno += 1 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
309 return line |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
310 if not self._file: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
311 if not self._files: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
312 return "" |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
313 self._filename = self._files[0] |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
314 self._files = self._files[1:] |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
315 self._filelineno = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
316 self._file = None |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22595
diff
changeset
|
317 self._isstdin = False |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
318 self._backupfilename = 0 |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
319 if self._filename == '-': |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
320 self._filename = '<stdin>' |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
321 self._file = sys.stdin |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22595
diff
changeset
|
322 self._isstdin = True |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
323 else: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
324 if self._inplace: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
325 self._backupfilename = ( |
| 42622 | 326 self._filename + (self._backup or ".bak")) |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
327 try: os.unlink(self._backupfilename) |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
328 except os.error: pass |
|
11387
019cd21c8c9f
Fix for PR#111: when using the inplace option, give the new file the
Guido van Rossum <guido@python.org>
parents:
8687
diff
changeset
|
329 # The next few lines may raise IOError |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
330 os.rename(self._filename, self._backupfilename) |
|
36595
c6fba456227b
Patch #1212287: fileinput.input() now has a mode parameter for
Georg Brandl <georg@python.org>
parents:
36594
diff
changeset
|
331 self._file = open(self._backupfilename, self._mode) |
|
11387
019cd21c8c9f
Fix for PR#111: when using the inplace option, give the new file the
Guido van Rossum <guido@python.org>
parents:
8687
diff
changeset
|
332 try: |
|
23697
c0e8c07ae1d6
Replace obsolete stat module constants with
Walter Dörwald <walter@livinglogic.de>
parents:
23521
diff
changeset
|
333 perm = os.fstat(self._file.fileno()).st_mode |
|
24807
685cd52c4c43
tightening up a few except: clauses
Skip Montanaro <skip@pobox.com>
parents:
23697
diff
changeset
|
334 except OSError: |
|
11387
019cd21c8c9f
Fix for PR#111: when using the inplace option, give the new file the
Guido van Rossum <guido@python.org>
parents:
8687
diff
changeset
|
335 self._output = open(self._filename, "w") |
|
019cd21c8c9f
Fix for PR#111: when using the inplace option, give the new file the
Guido van Rossum <guido@python.org>
parents:
8687
diff
changeset
|
336 else: |
|
43707
d8f7442b8cae
Patch 1341 by Amaury Forgeot d'Arc.
Guido van Rossum <guido@python.org>
parents:
43577
diff
changeset
|
337 mode = os.O_CREAT | os.O_WRONLY | os.O_TRUNC |
|
d8f7442b8cae
Patch 1341 by Amaury Forgeot d'Arc.
Guido van Rossum <guido@python.org>
parents:
43577
diff
changeset
|
338 if hasattr(os, 'O_BINARY'): |
|
d8f7442b8cae
Patch 1341 by Amaury Forgeot d'Arc.
Guido van Rossum <guido@python.org>
parents:
43577
diff
changeset
|
339 mode |= os.O_BINARY |
|
d8f7442b8cae
Patch 1341 by Amaury Forgeot d'Arc.
Guido van Rossum <guido@python.org>
parents:
43577
diff
changeset
|
340 |
|
d8f7442b8cae
Patch 1341 by Amaury Forgeot d'Arc.
Guido van Rossum <guido@python.org>
parents:
43577
diff
changeset
|
341 fd = os.open(self._filename, mode, perm) |
|
11387
019cd21c8c9f
Fix for PR#111: when using the inplace option, give the new file the
Guido van Rossum <guido@python.org>
parents:
8687
diff
changeset
|
342 self._output = os.fdopen(fd, "w") |
|
019cd21c8c9f
Fix for PR#111: when using the inplace option, give the new file the
Guido van Rossum <guido@python.org>
parents:
8687
diff
changeset
|
343 try: |
|
27166
0cadc29180e6
Test that chmod() actually exists before calling it (it doesn't on MacOS9).
Jack Jansen <jack.jansen@cwi.nl>
parents:
24807
diff
changeset
|
344 if hasattr(os, 'chmod'): |
|
0cadc29180e6
Test that chmod() actually exists before calling it (it doesn't on MacOS9).
Jack Jansen <jack.jansen@cwi.nl>
parents:
24807
diff
changeset
|
345 os.chmod(self._filename, perm) |
|
24807
685cd52c4c43
tightening up a few except: clauses
Skip Montanaro <skip@pobox.com>
parents:
23697
diff
changeset
|
346 except OSError: |
|
11387
019cd21c8c9f
Fix for PR#111: when using the inplace option, give the new file the
Guido van Rossum <guido@python.org>
parents:
8687
diff
changeset
|
347 pass |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
348 self._savestdout = sys.stdout |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
349 sys.stdout = self._output |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
350 else: |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
351 # This may raise IOError |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
352 if self._openhook: |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
353 self._file = self._openhook(self._filename, self._mode) |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
354 else: |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
355 self._file = open(self._filename, self._mode) |
|
15746
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
356 self._buffer = self._file.readlines(self._bufsize) |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
357 self._bufindex = 0 |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
358 if not self._buffer: |
|
4dbbf322a9df
Speed it up by using readlines(sizehint). It's still slower than
Guido van Rossum <guido@python.org>
parents:
12340
diff
changeset
|
359 self.nextfile() |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
360 # Recursive call |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
361 return self.readline() |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
362 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
363 def filename(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
364 return self._filename |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
365 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
366 def lineno(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
367 return self._lineno |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
368 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
369 def filelineno(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
370 return self._filelineno |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
371 |
|
36594
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
372 def fileno(self): |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
373 if self._file: |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
374 try: |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
375 return self._file.fileno() |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
376 except ValueError: |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
377 return -1 |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
378 else: |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
379 return -1 |
|
781654be55ef
Patch #1215184: fileinput now has a fileno() function for getting the
Georg Brandl <georg@python.org>
parents:
36590
diff
changeset
|
380 |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
381 def isfirstline(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
382 return self._filelineno == 1 |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
383 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
384 def isstdin(self): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
385 return self._isstdin |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
386 |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
387 |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
388 def hook_compressed(filename, mode): |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
389 ext = os.path.splitext(filename)[1] |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
390 if ext == '.gz': |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
391 import gzip |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
392 return gzip.open(filename, mode) |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
393 elif ext == '.bz2': |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
394 import bz2 |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
395 return bz2.BZ2File(filename, mode) |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
396 else: |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
397 return open(filename, mode) |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
398 |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
399 |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
400 def hook_encoded(encoding): |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
401 def openhook(filename, mode): |
|
73434
c2b3e8b437a4
fileinput: replace this last occurence of codecs.open with builtins.open.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73165
diff
changeset
|
402 return open(filename, mode, encoding=encoding) |
|
36596
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
403 return openhook |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
404 |
|
e57377f0a167
Patch #1215184: FileInput now can be given an opening hook which can
Georg Brandl <georg@python.org>
parents:
36595
diff
changeset
|
405 |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
406 def _test(): |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
407 import getopt |
|
54169
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
408 inplace = False |
|
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
409 backup = False |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
410 opts, args = getopt.getopt(sys.argv[1:], "ib:") |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
411 for o, a in opts: |
|
54169
904a1bd35e00
Use PEP 8 and true booleans.
Georg Brandl <georg@python.org>
parents:
43707
diff
changeset
|
412 if o == '-i': inplace = True |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
413 if o == '-b': backup = a |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
414 for line in input(args, inplace=inplace, backup=backup): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
415 if line[-1:] == '\n': line = line[:-1] |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6620
diff
changeset
|
416 if line[-1:] == '\r': line = line[:-1] |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
36608
diff
changeset
|
417 print("%d: %s[%d]%s %s" % (lineno(), filename(), filelineno(), |
|
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
36608
diff
changeset
|
418 isfirstline() and "*" or "", line)) |
|
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
36608
diff
changeset
|
419 print("%d: %s[%d]" % (lineno(), filename(), filelineno())) |
|
6620
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
420 |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
421 if __name__ == '__main__': |
|
00b1b77c4177
A new standard module, as discussed on comp.lang.python, to simplify
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
422 _test() |
