In addition to the standard :c:func:`fopen` values *mode* may be ``'U'`` or
``'rU'``. Python is usually built with :term:`universal newlines` support;
- supplying
- ``'U'`` opens the file as a text file, but lines may be terminated by any of the
- following: the Unix end-of-line convention ``'\n'``, the Macintosh convention
- ``'\r'``, or the Windows convention ``'\r\n'``. All of these external
- representations are seen as ``'\n'`` by the Python program. If Python is built
- without universal newlines support a *mode* with ``'U'`` is the same as normal
- text mode. Note that file objects so opened also have an attribute called
- :attr:`newlines` which has a value of ``None`` (if no newlines have yet been
- seen), ``'\n'``, ``'\r'``, ``'\r\n'``, or a tuple containing all the newline
- types seen.
+ supplying ``'U'`` opens the file as a text file, but lines may be terminated
+ by any of the following: the Unix end-of-line convention ``'\n'``, the
+ Macintosh convention ``'\r'``, or the Windows convention ``'\r\n'``. All of
+ these external representations are seen as ``'\n'`` by the Python program.
+ If Python is built without universal newlines support a *mode* with ``'U'``
+ is the same as normal text mode. Note that file objects so opened also have
+ an attribute called :attr:`newlines` which has a value of ``None`` (if no
+ newlines have yet been seen), ``'\n'``, ``'\r'``, ``'\r\n'``, or a tuple
+ containing all the newline types seen.
Python enforces that the mode, after stripping ``'U'``, begins with ``'r'``,
``'w'`` or ``'a'``.
.. index::
single: universal newlines; open() (in module io)
- *newline* controls how :term:`universal newlines` works (it only applies
- to text
- mode). It can be ``None``, ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It
- works as follows:
+ *newline* controls how :term:`universal newlines` works (it only applies to
+ text mode). It can be ``None``, ``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``.
+ It works as follows:
* On input, if *newline* is ``None``, universal newlines mode is enabled.
Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``, and these
``''``, ``'\n'``, ``'\r'``, and ``'\r\n'``. It works as follows:
* On input, if *newline* is ``None``, :term:`universal newlines` mode is
- enabled.
- Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``, and these
- are translated into ``'\n'`` before being returned to the caller. If it is
- ``''``, universal newlines mode is enabled, but line endings are returned to
- the caller untranslated. If it has any of the other legal values, input
- lines are only terminated by the given string, and the line ending is
- returned to the caller untranslated.
+ enabled. Lines in the input can end in ``'\n'``, ``'\r'``, or ``'\r\n'``,
+ and these are translated into ``'\n'`` before being returned to the
+ caller. If it is ``''``, universal newlines mode is enabled, but line
+ endings are returned to the caller untranslated. If it has any of the
+ other legal values, input lines are only terminated by the given string,
+ and the line ending is returned to the caller untranslated.
* On output, if *newline* is ``None``, any ``'\n'`` characters written are
translated to the system default line separator, :data:`os.linesep`. If
.. _side-by-side assembly: http://en.wikipedia.org/wiki/Side-by-Side_Assembly
- If *universal_newlines* is ``True``, the file objects *stdout* and *stderr* are
- opened as text files in :term:`universal newlines` mode. Lines may be
- terminated by any of ``'\n'``, the Unix
- end-of-line convention, ``'\r'``, the old Macintosh convention or ``'\r\n'``, the
- Windows convention. All of these external representations are seen as ``'\n'``
- by the Python program.
+ If *universal_newlines* is ``True``, the file objects *stdout* and *stderr*
+ are opened as text files in :term:`universal newlines` mode. Lines may be
+ terminated by any of ``'\n'``, the Unix end-of-line convention, ``'\r'``,
+ the old Macintosh convention or ``'\r\n'``, the Windows convention. All of
+ these external representations are seen as ``'\n'`` by the Python program.
.. note::
.. function:: urlopen(url[, data[, proxies]])
- Open a network object denoted by a URL for reading. If the URL does not have a
- scheme identifier, or if it has :file:`file:` as its scheme identifier, this
- opens a local file (without :term:`universal newlines`); otherwise it opens a socket to
- a server somewhere on the network. If the connection cannot be made the
- :exc:`IOError` exception is raised. If all went well, a file-like object is
- returned. This supports the following methods: :meth:`read`, :meth:`readline`,
- :meth:`readlines`, :meth:`fileno`, :meth:`close`, :meth:`info`, :meth:`getcode` and
- :meth:`geturl`. It also has proper support for the :term:`iterator` protocol. One
- caveat: the :meth:`read` method, if the size argument is omitted or negative,
- may not read until the end of the data stream; there is no good way to determine
+ Open a network object denoted by a URL for reading. If the URL does not
+ have a scheme identifier, or if it has :file:`file:` as its scheme
+ identifier, this opens a local file (without :term:`universal newlines`);
+ otherwise it opens a socket to a server somewhere on the network. If the
+ connection cannot be made the :exc:`IOError` exception is raised. If all
+ went well, a file-like object is returned. This supports the following
+ methods: :meth:`read`, :meth:`readline`, :meth:`readlines`, :meth:`fileno`,
+ :meth:`close`, :meth:`info`, :meth:`getcode` and :meth:`geturl`. It also
+ has proper support for the :term:`iterator` protocol. One caveat: the
+ :meth:`read` method, if the size argument is omitted or negative, may not
+ read until the end of the data stream; there is no good way to determine
that the entire stream from a socket has been read in the general case.
Except for the :meth:`info`, :meth:`getcode` and :meth:`geturl` methods,
10), MacOS uses the carriage return (ASCII character 13), and Windows uses a
two-character sequence of a carriage return plus a newline.
-Python's file objects can now support end of line conventions other than the one
-followed by the platform on which Python is running. Opening a file with the
-mode ``'U'`` or ``'rU'`` will open a file for reading in
-:term:`universal newlines` mode.
-All three line ending conventions will be translated to a ``'\n'`` in the
-strings returned by the various file methods such as :meth:`read` and
-:meth:`readline`.
+Python's file objects can now support end of line conventions other than the
+one followed by the platform on which Python is running. Opening a file with
+the mode ``'U'`` or ``'rU'`` will open a file for reading in :term:`universal
+newlines` mode. All three line ending conventions will be translated to a
+``'\n'`` in the strings returned by the various file methods such as
+:meth:`read` and :meth:`readline`.
Universal newline support is also used when importing modules and when executing
a file with the :func:`execfile` function. This means that Python modules can
* The :mod:`fileinput` module was made more flexible. Unicode filenames are now
supported, and a *mode* parameter that defaults to ``"r"`` was added to the
- :func:`input` function to allow opening files in binary or :term:`universal newlines`
- mode. Another new parameter, *openhook*, lets you use a function other than
- :func:`open` to open the input files. Once you're iterating over the set of
- files, the :class:`FileInput` object's new :meth:`fileno` returns the file
- descriptor for the currently opened file. (Contributed by Georg Brandl.)
+ :func:`input` function to allow opening files in binary or :term:`universal
+ newlines` mode. Another new parameter, *openhook*, lets you use a function
+ other than :func:`open` to open the input files. Once you're iterating over
+ the set of files, the :class:`FileInput` object's new :meth:`fileno` returns
+ the file descriptor for the currently opened file. (Contributed by Georg
+ Brandl.)
* In the :mod:`gc` module, the new :func:`get_count` function returns a 3-tuple
containing the current collection counts for the three GC generations. This is
Drew Jenkins
Flemming Kjær Jensen
Philip Jenvey
+Chris Jerdonek
Jiba
Orjan Johansen
Fredrik Johansson