File locking
Jonathan Giddy
jon at rdt.monash.edu.au
Sat Jun 5 00:49:29 EDT 1999
"A.M. Kuchling" <amk1 at erols.com> writes:
>What is the correct solution for doing file locking in Python
>programs? The docs for the posixfile module say:
After recent experimentation and reading of the source, I discovered that
Python's fcntl.lockf() accepts the flock() arguments, providing a portable
and useful interface to fcntl locking.
So, the answer is:
fcntl.lockf(fd, FCNTL.LOCK_EX) -- set write (exclusive) lock
fcntl.lockf(fd, FCNTL.LOCK_SH) -- set read (shared) lock
fcntl.lockf(fd, FCNTL.LOCK_UN) -- unlock
with FCNTL.LOCK_NB available for non-blocking lock attempts.
The only trick is that FCNTL doesn't contain these values on all platforms,
so you need something like:
from FCNTL import *
try:
LOCK_SH
except NameError:
LOCK_SH = 1
LOCK_EX = 2
LOCK_NB = 4
LOCK_UN = 8
More information about the Python-list
mailing list