Pythonic的方式来检查文件是否存在?

这个问题在这里已经有了答案:

  • 如何检查文件是否存在? 39个答案

  • 检查路径是否是现有文件:

    os.path.isfile(path)

    如果路径是现有的常规文件,则返回True 。 这遵循符号链接,所以islink()isfile()对于相同的路径都可以为true。


    取而代之的os.path.isfile ,建议由别人,我建议使用os.path.exists ,检查与该名什么,不只是它是否是一个普通的文件。

    从而:

    if not os.path.exists(filename):
        file(filename, 'w').close()
    

    或者:

    file(filename, 'w+').close()
    

    后者将创建该文件,如果它存在,但不是。 但是,如果文件存在,它将会失败,但是您没有写入权限。 这就是为什么我更喜欢第一个解决方案。


    在我看来,迄今为止所有其他答案(迄今为止)未能解决与他们提出的解决方案相关的竞争条件。

    任何你首先检查文件存在的代码,然后在你的程序的几行后面创建它,会冒着在你没有看到并导致你的问题时创建文件的风险(或者你导致所有者“其他文件”问题)。

    如果你想避免这种事情,我会建议像下面这样(未经测试):

    import os
    
    def open_if_not_exists(filename):
        try:
            fd = os.open(filename, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
        except OSError, e:
            if e.errno == 17:
                print e
                return None
            else:
                raise
        else:
            return os.fdopen(fd, 'w')
    

    如果文件不存在,应该打开文件进行写入,并返回文件对象。 如果它确实存在,它将打印“Ooops”并返回None(未经测试,仅基于阅读python文档,因此可能不是100%正确的)。

    链接地址: http://www.djcxy.com/p/7297.html

    上一篇: Pythonic way to check if a file exists?

    下一篇: SERVER['REQUEST