Disponibilidad: Unix.
Note: This module will become obsolete in a future release. The locking operation that it provides is done better and more portably by the fcntl.lockf() call.
This module implements some additional functionality over the built-in file objects. In particular, it implements file locking, control over the file flags, and an easy interface to duplicate the file object. The module defines a new file object, the posixfile object. It has all the standard file object methods and adds the methods described below. This module only works for certain flavors of Unix, since it uses fcntl.fcntl() for file locking.
To instantiate a posixfile object, use the open() function in the posixfile module. The resulting object looks and feels roughly the same as a standard file object.
The posixfile module defines the following constants:
The posixfile module defines the following functions:
The posixfile object defines the following additional methods:
0
. start
specifies the starting offset of the section, where the default is
0
. The whence argument specifies where the offset is
relative to. It accepts one of the constants SEEK_SET,
SEEK_CUR or SEEK_END. The default is
SEEK_SET. For more information about the arguments refer
to the fcntl(2) manual page on your system.
All methods raise IOError when the request fails.
Format characters for the lock() method have the following meaning:
Format | Meaning |
---|---|
u | unlock the specified region |
r | request a read lock for the specified section |
w | request a write lock for the specified section |
In addition the following modifiers can be added to the format:
Modifier | Meaning | Notes |
---|---|---|
| | wait until the lock has been granted | |
? | return the first lock conflicting with the requested lock, or
None if there is no conflict. |
(1) |
Note:
(mode, len,
start, whence, pid)
where mode is a character
representing the type of lock ('r' or 'w'). This modifier prevents a
request from being granted; it is for query purposes only.
Format characters for the flags() method have the following meanings:
Format | Meaning |
---|---|
a | append only flag |
c | close on exec flag |
n | no delay flag (also called non-blocking flag) |
s | synchronization flag |
In addition the following modifiers can be added to the format:
Modifier | Meaning | Notes |
---|---|---|
! | turn the specified flags 'off', instead of the default 'on' | (1) |
= | replace the flags, instead of the default 'OR' operation | (1) |
? | return a string in which the characters represent the flags that are set. | (2) |
Notes:
Examples:
import posixfile file = posixfile.open('/tmp/test', 'w') file.lock('w|') ... file.lock('u') file.close()