如何在Python中检查目录是否存在?
仅针对目录使用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
existing = filter(os.path.isdir(['/lib', '/usr/lib', '/usr/local/lib'])
中一样。 - phihagmap
,但通常情况下,你需要使用参数和括号来调用函数。另外,在你的示例中有一些错别字。推测你的意思是 filter(os.path.isdir, ['/lib', '/usr/lib', '/usr/local/lib'])
。 - hughdbrownos.path.isfile(path)
。 - Nicholaspathlib
选项(我更喜欢这个选项),您也可以只使用相对路径,例如 (Path.('new_folder') / 'file.txt').exists()
。要将路径解析为完全限定(绝对)路径,您可以使用 Path(...).resolve()
。 - CadoizPython 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
通过PyPi上的pathlib2模块,Pathlib也可以在Python 2.7上使用。
p / 'bin' / 'vim'
"? - Nathan majicvr.com非常接近了!os.path.isdir
会返回True
,如果你传入的是一个当前已经存在的目录名称。如果它不存在或者不是一个目录,则返回False
。
os.path.isdir(路径)或os.makedirs(路径)
。 - minsPath(path).mkdir(parents=True, exist_ok=True)
可以一次性创建嵌套的路径。 - Kirk Strauser可以使用 os.path.exists()
方法。
os.path.isdir
可以完成这个任务。 - aganders3我们可以使用两个内置函数来检查
os.path.isdir("directory")
如果指定的目录可用,它将返回布尔值true。
os.path.exists("directoryorfile")
如果指定的目录或文件存在,它将返回布尔值true。
要检查路径是否为目录;
os.path.isdir("directorypath")
如果路径是目录,将返回布尔值true。
以下代码检查您的代码中引用的目录是否存在,如果它不存在于您的工作场所中,则创建一个:
以下代码检查您的代码中引用的目录是否存在,如果不存在则创建一个:
import os
if not os.path.isdir("directory_name"):
os.mkdir("directory_name")
Source,如果它仍然存在于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)
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
...并且通过允许在3.2+版本中调用os.makedirs
时使用名为exist_ok
的关键字参数来避免错误。
os.makedirs("path/to/directory", exist_ok=True) # succeeds even if directory exists.
就像这样:
In [3]: os.path.exists('/d/temp')
Out[3]: True
可能加入一个os.path.isdir(...)
来确保。
os.stat
函数来判断目录是否同时存在且为一个目录。 - d33tahos.stat
来区分目录和文件。当路径无效时,它会引发OSError
,无论是文件还是目录。此外,在检查后的任何代码也容易受到竞争条件的影响。 - Tomáš Zatoos.stat
。 - Cadoiz