[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