best way to check if a file exists?

georgeryoung at georgeryoung at
Wed Nov 1 01:56:30 CET 2006

On Oct 31, 4:01 pm, John Salerno <johnj... at> wrote:
> What is the best way to check if a file already exists in the current
> directory? I saw os.path.isfile(), but I'm not sure if that does more
> than what I need.
> I just want to check if a file of a certain name exists before the user
> creates a new file of that name.

You could be more "pythonic", and simply try to create the file,
catching the exception if if fails.  This works on linux:

   newfd ='foobar', os.O_EXCL | os.O_CREAT)
   new_file = os.fdopen(newdf)
except OSError, x:
   if x[1] == 'File exists':

[but beware unreliable on an NFS file system, from "man open":
   O_EXCL is broken  on  NFS  file
   systems,  programs  which  rely  on it for performing locking tasks
   will contain a race condition.  The solution for performing  atomic
   file  locking  using  a  lockfile is to create a unique file on the
   same fs (e.g., incorporating hostname and pid), use link(2) to make
   a  link  to the lockfile. If link() returns 0, the lock is
   Otherwise, use stat(2) on the unique file  to  check  if  its
   link  count has increased to 2, in which case the lock is also

More information about the Python-list mailing list