[Python-ideas] Add create mode to open()

Antoine Pitrou solipsis at pitrou.net
Wed Aug 17 12:19:53 CEST 2011


On Wed, 17 Aug 2011 12:17:04 +0200
"M.-A. Lemburg" <mal at egenix.com> wrote:

> Antoine Pitrou wrote:
> > Le mercredi 17 août 2011 à 11:52 +0200, M.-A. Lemburg a écrit :
> >> Antoine Pitrou wrote:
> >>> On Wed, 17 Aug 2011 14:11:32 +1000
> >>> Nick Coghlan <ncoghlan at gmail.com> wrote:
> >>>> On Wed, Aug 17, 2011 at 1:43 PM, Devin Jeanpierre
> >>>> <jeanpierreda at gmail.com> wrote:
> >>>>> I'd also point out that for those that don't want race conditions,
> >>>>> Python is discouraging. The correct incantation involves two
> >>>>> undocumented constants, plus a unique and rarely used way of opening
> >>>>> files that involves unix file descriptors.
> >>>>
> >>>> FWIW, when you control the filename, you can include an additional
> >>>> subdirectory precisely for the exception when a second process
> >>>> attempts to create the same subdirectory.
> >>>
> >>> How do you create a directory and a file atomically?
> >>
> >> On Windows, directories are created atomically. On Unix,
> >> too, but symlinks are faster. You can use those to implement
> >> cooperative file locks in a fairly cross-platform way.
> > 
> > I was thinking of creating both the directory and the file in a single
> > atomic operation. But if the directory is only ever used for that file,
> > I guess it's ok.
> > (there's still a problem when deleting the directory and the file, which
> > can't be atomic, and the file has to be deleted before the directory,
> > meaning if the process crashes in between, there are "legitimate"
> > situations where the directory exists but not the file in it...)
> 
> The directory is only used as locking mechanism. You normally
> don't need to create any files within that lock directory unless
> you want to store extra lock information.

Ah, I thought Nick proposed to create the file in that directory. My
bad.

Regards

Antoine.





More information about the Python-ideas mailing list