Most pythonic way to delete a file which may not exist

后端 未结 13 1188
Happy的楠姐
Happy的楠姐 2020-12-02 03:50

I want to delete the file filename if it exists. Is it proper to say

if os.path.exists(filename):
    os.remove(filename)

Is

13条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-02 04:12

    A more pythonic way would be:

    try:
        os.remove(filename)
    except OSError:
        pass
    

    Although this takes even more lines and looks very ugly, it avoids the unnecessary call to os.path.exists() and follows the python convention of overusing exceptions.

    It may be worthwhile to write a function to do this for you:

    import os, errno
    
    def silentremove(filename):
        try:
            os.remove(filename)
        except OSError as e: # this would be "except OSError, e:" before Python 2.6
            if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
                raise # re-raise exception if a different error occurred
    

提交回复
热议问题