mirror of https://github.com/python/cpython
Add examples for opener argument of open (#13424).
Patch by Guillaume Pratte.
This commit is contained in:
parent
0167edf803
commit
8f423c9359
|
@ -935,6 +935,36 @@ are always available. They are listed here in alphabetical order.
|
|||
: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::
|
||||
|
||||
>>> import os
|
||||
>>> def open_relative(dirname):
|
||||
... dir_fd = os.open(dirname, os.O_RDONLY)
|
||||
... def opener(path, flags):
|
||||
... return os.open(path, flags, dir_fd=dir_fd)
|
||||
... return opener
|
||||
...
|
||||
>>> opener = open_relative('somedir')
|
||||
>>> with open('spamspam.txt', 'w', opener=opener) as f:
|
||||
... print('This will be written to somedir/spamspam.txt', file=f)
|
||||
...
|
||||
|
||||
.. versionchanged:: 3.3
|
||||
The *opener* parameter was added.
|
||||
The ``'x'`` mode was added.
|
||||
|
|
|
@ -498,6 +498,9 @@ Raw File I/O
|
|||
:mod:`os.open` as *opener* results in functionality similar to passing
|
||||
``None``).
|
||||
|
||||
See the :func:`open` built-in function for examples on using the *opener*
|
||||
parameter.
|
||||
|
||||
.. versionchanged:: 3.3
|
||||
The *opener* parameter was added.
|
||||
The ``'x'`` mode was added.
|
||||
|
|
Loading…
Reference in New Issue