Granularity of OSError

Christian Heimes lists at cheimes.de
Fri Sep 18 20:23:27 EDT 2009


kj wrote:
> For example, LBYL would look like this:
> 
> if os.path.isfile(some_file):
>     os.unlink(some_file)
> 
> In contrast, EAFP would look like this:
> 
> try:
>     os.unlink(some_file)
> except OSError:
>     pass


The two version aren't equal. The first one suffers from a race
condition which may lead to a severe security issue. The file may be
gone or replaced by a different file in the time span between the check
and the call to unlink().

Christian




More information about the Python-list mailing list