Am 03.11.2012 22:10, schrieb eric.araujo:
http://hg.python.org/cpython/rev/17b094c08600 changeset: 80219:17b094c08600 branch: 3.3 parent: 80214:e6d0951f412a user: Éric Araujo
date: Sat Nov 03 17:06:52 2012 -0400 summary: Add examples for opener argument of open (#13424). Patch by Guillaume Pratte.
files: Doc/library/functions.rst | 30 +++++++++++++++++++++++++++ Doc/library/io.rst | 3 ++ Misc/ACKS | 1 + 3 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -935,6 +935,36 @@ :mod:`os.open` as *opener* results in functionality similar to passing ``None``).
+ The following example is an alternative implementation for opening files + for exclusive writing. If we did not have support for the ``'x'`` mode, + we could implement it with this opener:: + + >>> import os + >>> def open_exclusive(path, mode): + ... return os.open(path, mode | os.O_CREAT | os.O_EXCL) + ... + >>> filename = 'spam.txt' + >>> fp = open(filename, 'w', opener=open_exclusive) + >>> fp2 = open(filename, 'w', opener=open_exclusive) + Traceback (most recent call last): + ... + FileExistsError: [Errno 17] File exists: 'spam.txt' + + This other example uses the :ref:`dir_fd` parameter of the + :func:`os.open` function to open a file relative to a given directory::
Please heed your Sphinx warnings: the :ref:`dir_fd` needs a link caption, since it can't autogenerate one (the dir_fd anchor does not point to a heading). Georg