[Tutor] File locking
Alan Gauld
alan.gauld at btinternet.com
Thu Mar 22 00:28:41 CET 2007
Jeff,
Just catching up after a week on vacation, but nobody
seems to have picked this up so...
> I'm always disappointed when I find something that Python
> doesn't handle in a platform independent way.
That's often because the platforms all do it too differently! :-)
> 1. I don't see a way to atomically open a file for writing if and
> only
> if it doesn't exist
Doesn't the os.path.exists() function work on all platforms?
> 2. I don't see a way to atomically open a file for writing and
> obtain a
> lock on the file.
That's usually automatic on filesystems that support it. (And
impossible on those that don't! - eg DOS/FAT)
> 3. I don't see a platform independent way to obtain a lock
> on a file.
Not all platforms support file locking. And some platforms
(eg. Windows) only support it on some filesystems
(FAT32 up)
> You have to do something goofy like
> if sys.platform == win32:
> import msvcrt
> else:
> import fcntl
> and then similar things to call the correct functions with the
> correct flags.
You only have to do this on the rare occasions when you want
to lock a file and you are not writing to it. Otherwise the act of
writing should reate a lock, if possible. (Or so I, perhaps niaively,
believe!)
> Please let me know if I'm missing something
Maybe os.path.exists() and maybe automatic locking on writes.
HTH, and if not elicits other replies!
--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld
More information about the Tutor
mailing list