如何检查是否存在文件,而不使用试用声明?


当前回答

使用:

import os
#Your path here e.g. "C:\Program Files\text.txt"
#For access purposes: "C:\\Program Files\\text.txt"
if os.path.exists("C:\..."):
    print "File found!"
else:
    print "File not found!"

进口 OS 使您更容易与您的操作系统一起导航和执行标准操作。

请参见《如何检查没有例外的文件是否存在》。

如果您需要高级操作,请使用Shutil。

其他回答

此外, os.access():

if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()

是 R_OK, W_OK, 和 X_OK 旗帜测试许可证(doc)。

不同于 isfile(), exist() 将返回 True for Directory. 因此,根据您是否只需要平板文件或 Directory,您将使用 isfile() 或 exist()。 这里有一些简单的 REPL 输出:

>>> os.path.isfile("/etc/password.txt")
True
>>> os.path.isfile("/etc")
False
>>> os.path.isfile("/does/not/exist")
False
>>> os.path.exists("/etc/password.txt")
True
>>> os.path.exists("/etc")
True
>>> os.path.exists("/does/not/exist")
False

使用:

import os

# For testing purposes the arguments defaulted to the current folder and file.
# returns True if file found
def file_exists(FOLDER_PATH='../', FILE_NAME=__file__):
    return os.path.isdir(FOLDER_PATH) \
        and os.path.isfile(os.path.join(FOLDER_PATH, FILE_NAME))

它基本上是一个文件夹检查,然后使用 os.path.join 使用适当的目录分离器进行文件检查。

使用:

import os
#Your path here e.g. "C:\Program Files\text.txt"
#For access purposes: "C:\\Program Files\\text.txt"
if os.path.exists("C:\..."):
    print "File found!"
else:
    print "File not found!"

进口 OS 使您更容易与您的操作系统一起导航和执行标准操作。

请参见《如何检查没有例外的文件是否存在》。

如果您需要高级操作,请使用Shutil。

TL;DR 答案是:使用 pathlib 模块


Pathlib 可能是几乎所有文件操作中最现代化和最方便的方式. 对于文件或文件夹的存在,一个单一的代码线就足够了. 如果文件不存在,它不会扔出任何例外。

from pathlib import Path

if Path("myfile.txt").exists(): # works for both file and folders
    # do your cool stuff...

pathlib 模块在 Python 3.4 中引入,所以你需要 Python 3.4+ 这个图书馆在使用文件和文件夹时使你的生活更容易,而且很方便使用。

BTW,如果你要重新使用路径,那么最好将其分配给一个变量。

因此,它将成为:

from pathlib import Path

p = Path("loc/of/myfile.txt")
if p.exists(): # works for both file and folders
    # do stuffs...
#reuse 'p' if needed.