mirror of https://github.com/python/cpython
Patch #1215184: fileinput now has a fileno() function for getting the
current file number.
This commit is contained in:
parent
602b9ba6b3
commit
67e9fb9d7a
|
@ -62,6 +62,12 @@ The following functions use the global state created by
|
|||
line has been read, returns \code{None}.
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{fileno}{}
|
||||
Return the integer ``file descriptor'' for the current file. When no
|
||||
file is opened (before the first line and between files), returns
|
||||
\code{-1}.
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{lineno}{}
|
||||
Return the cumulative line number of the line that has just been
|
||||
read. Before the first line has been read, returns \code{0}. After
|
||||
|
@ -107,10 +113,11 @@ module is available for subclassing as well:
|
|||
\begin{classdesc}{FileInput}{\optional{files\optional{,
|
||||
inplace\optional{, backup}}}}
|
||||
Class \class{FileInput} is the implementation; its methods
|
||||
\method{filename()}, \method{lineno()}, \method{fileline()},
|
||||
\method{isfirstline()}, \method{isstdin()}, \method{nextfile()} and
|
||||
\method{close()} correspond to the functions of the same name in the
|
||||
module. In addition it has a \method{readline()} method which
|
||||
\method{filename()}, \method{fileno()}, \method{lineno()},
|
||||
\method{fileline()}, \method{isfirstline()}, \method{isstdin()},
|
||||
\method{nextfile()} and \method{close()} correspond to the functions
|
||||
of the same name in the module.
|
||||
In addition it has a \method{readline()} method which
|
||||
returns the next input line, and a \method{__getitem__()} method
|
||||
which implements the sequence behavior. The sequence must be
|
||||
accessed in strictly sequential order; random access and
|
||||
|
|
|
@ -73,7 +73,6 @@ XXX Possible additions:
|
|||
|
||||
- optional getopt argument processing
|
||||
- specify open mode ('r' or 'rb')
|
||||
- fileno()
|
||||
- isatty()
|
||||
- read(), read(size), even readlines()
|
||||
|
||||
|
@ -153,6 +152,15 @@ def filelineno():
|
|||
raise RuntimeError, "no active input()"
|
||||
return _state.filelineno()
|
||||
|
||||
def fileno():
|
||||
"""
|
||||
Return the file number of the current file. When no file is currently
|
||||
opened, returns -1.
|
||||
"""
|
||||
if not _state:
|
||||
raise RuntimeError, "no active input()"
|
||||
return _state.fileno()
|
||||
|
||||
def isfirstline():
|
||||
"""
|
||||
Returns true the line just read is the first line of its file,
|
||||
|
@ -175,8 +183,9 @@ class FileInput:
|
|||
"""class FileInput([files[, inplace[, backup]]])
|
||||
|
||||
Class FileInput is the implementation of the module; its methods
|
||||
filename(), lineno(), fileline(), isfirstline(), isstdin(), nextfile()
|
||||
and close() correspond to the functions of the same name in the module.
|
||||
filename(), lineno(), fileline(), isfirstline(), isstdin(), fileno(),
|
||||
nextfile() and close() correspond to the functions of the same name
|
||||
in the module.
|
||||
In addition it has a readline() method which returns the next
|
||||
input line, and a __getitem__() method which implements the
|
||||
sequence behavior. The sequence must be accessed in strictly
|
||||
|
@ -334,6 +343,15 @@ class FileInput:
|
|||
def filelineno(self):
|
||||
return self._filelineno
|
||||
|
||||
def fileno(self):
|
||||
if self._file:
|
||||
try:
|
||||
return self._file.fileno()
|
||||
except ValueError:
|
||||
return -1
|
||||
else:
|
||||
return -1
|
||||
|
||||
def isfirstline(self):
|
||||
return self._filelineno == 1
|
||||
|
||||
|
|
|
@ -167,3 +167,19 @@ try:
|
|||
verify(lines == ["A\n", "B"])
|
||||
finally:
|
||||
remove_tempfiles(t1)
|
||||
|
||||
if verbose:
|
||||
print "16. fileno()"
|
||||
try:
|
||||
t1 = writeTmp(1, ["A\nB"])
|
||||
t2 = writeTmp(2, ["C\nD"])
|
||||
fi = FileInput(files=(t1, t2))
|
||||
verify(fi.fileno() == -1)
|
||||
line = fi.next()
|
||||
verify(fi.fileno() != -1)
|
||||
fi.nextfile()
|
||||
verify(fi.fileno() == -1)
|
||||
line = list(fi)
|
||||
verify(fi.fileno() == -1)
|
||||
finally:
|
||||
remove_tempfiles(t1, t2)
|
||||
|
|
|
@ -366,6 +366,9 @@ Extension Modules
|
|||
Library
|
||||
-------
|
||||
|
||||
- Patch #1215184: fileinput now has a fileno() function for getting the
|
||||
current file number.
|
||||
|
||||
- Patch #1349274: gettext.install() now optionally installs additional
|
||||
translation functions other than _() in the builtin namespace.
|
||||
|
||||
|
|
Loading…
Reference in New Issue