如何检查目录是否存在?


当前回答

太近了!如果传入当前存在的目录名,os.path.isdir将返回True。如果它不存在或不是目录,则返回False。

其他回答

步骤1:导入os.path模块在运行代码之前导入os.path模块。

import os.path
from os import path

步骤2:使用path.exists()函数path.exists()方法用于查找文件是否存在。

path.exists("your_file.txt")

步骤3:使用os.path.isfile()我们可以使用isfile命令来确定给定输入是否为文件。

path.isfile('your_file.txt')

步骤4:使用os.path.isdir()我们可以使用os.path.dir()函数来确定给定的输入是否是目录。

path.isdir('myDirectory')

这是完整的代码

    import os.path
    from os import path
    
    def main():
    
       print ("File exists:"+str(path.exists('your_file.txt')))
       print ("Directory exists:" + str(path.exists('myDirectory')))
       print("Item is a file: " + str(path.isfile("your_file.txt")))
       print("Item is a directory: " + str(path.isdir("myDirectory")))
    
    if __name__== "__main__":
       main()

pathlibPath.exists()对于Python 3.4

Pathlib模块包含在Python 3.4和更高版本中,用于处理文件系统路径。Python使用面向对象技术检查文件夹是否存在。

import pathlib
file = pathlib.Path("your_file.txt")
if file.exists ():
    print ("File exist")
else:
    print ("File not exist")

os.path.exists()–如果路径或目录确实存在,则返回True。os.path.isfile()–如果路径为File,则返回True。os.path.isdir()–如果路径为Directory,则返回True。pathlib.Path.exists()–如果路径或目录确实存在,则返回True。(在Python 3.4及以上版本中)

文章参考:如何检查Python中是否存在目录?

是的,使用os.path.exists()。

Python 3.4在标准库中引入了pathlib模块,它提供了一种面向对象的方法来处理文件系统路径。Path对象的is_dir()和exists()方法可用于回答以下问题:

In [1]: from pathlib import Path

In [2]: p = Path('/usr')

In [3]: p.exists()
Out[3]: True

In [4]: p.is_dir()
Out[4]: True

路径(和字符串)可以使用/运算符连接在一起:

In [5]: q = p / 'bin' / 'vim'

In [6]: q
Out[6]: PosixPath('/usr/bin/vim') 

In [7]: q.exists()
Out[7]: True

In [8]: q.is_dir()
Out[8]: False

Python 2.7上也可以通过PyPi上的pathlib2模块获得Pathlib。

仅对目录使用os.path.isdir:

>>> import os
>>> os.path.isdir('new_folder')
True

对文件和目录使用os.path.exists:

>>> import os
>>> os.path.exists(os.path.join(os.getcwd(), 'new_folder', 'file.txt'))
False

或者,您可以使用pathlib:

 >>> from pathlib import Path
 >>> Path('new_folder').is_dir()
 True
 >>> (Path.cwd() / 'new_folder' / 'file.txt').exists()
 False

如果目录不在,您可能还想创建该目录。

来源,如果它还在SO上。

=====================================================================

在Python≥3.5时,使用pathlib.Path.mkdir:

from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)

对于旧版本的Python,我看到了两个质量很好的答案,每一个都有一个小缺陷,所以我将给出我的看法:

尝试os.path.exists,并考虑创建os.makedirs。

import os
if not os.path.exists(directory):
    os.makedirs(directory)

正如注释和其他地方所指出的,存在一个竞争条件——如果在os.path.exists和os.makedirs调用之间创建目录,os.makedir将失败,并出现OSError。不幸的是,全面捕获OSError并继续并不是万无一失的,因为它会忽略由于其他因素(如权限不足、磁盘已满等)导致的目录创建失败。

一种选择是捕获OSError并检查嵌入的错误代码(请参阅是否有跨平台的方式从Python的OSError获取信息):

import os, errno

try:
    os.makedirs(directory)
except OSError as e:
    if e.errno != errno.EEXIST:
        raise

或者,可以有第二个os.path.exists,但假设另一个在第一次检查之后创建了目录,然后在第二次检查之前删除了它,我们仍然可能被愚弄。

根据应用程序的不同,并发操作的危险可能大于或小于其他因素(如文件权限)造成的危险。在选择实现之前,开发人员必须更多地了解正在开发的特定应用程序及其预期环境。

现代版本的Python通过暴露FileExistsError(在3.3+中)大大改进了这段代码。。。

try:
    os.makedirs("path/to/directory")
except FileExistsError:
    # directory already exists
    pass

…并允许os.makedirs使用名为exist_ok的关键字参数(在3.2+中)。

os.makedirs("path/to/directory", exist_ok=True)  # succeeds even if directory exists.