81

我正在检查目录是否存在,但我注意到我使用os.path.exists的是os.path.isdir. 两者都工作得很好,但我很好奇使用isdir而不是exists.

4

5 回答 5

134

os.path.existsTrue如果有一个具有该名称的常规文件,也会返回。

os.path.isdirTrue仅当该路径存在并且是目录或目录的符号链接时才会返回。

于 2013-02-25T22:07:59.230 回答
6

就像听起来一样:如果路径存在,但是是文件而不是目录,isdir将返回False. 同时,在这两种情况下exists都会返回True

于 2013-02-25T22:08:01.720 回答
4

os.path.isdir()检查路径是否存在并且是一个目录,并针对这种情况返回 TRUE。

类似地,os.path.isfile()检查路径是否存在并且是文件,并针对这种情况返回 TRUE。

并且,os.path.exists() 检查路径是否存在并且不关心路径是否指向文件或目录并在任何一种情况下都返回 TRUE。

于 2019-05-22T16:55:17.323 回答
0

大多数时候,它是一样的。

但是,路径可以物理存在而path.exists()返回 False。如果 os.stat() 对此文件返回 False,就会出现这种情况。

如果路径物理存在,path.isdir()则将始终返回 True。这不依赖于平台。

于 2013-02-25T22:14:17.977 回答
0

os.path.exists(path) 如果 path 引用现有路径,则返回 True。现有路径可以是常规文件(http://en.wikipedia.org/wiki/Unix_file_types#Regular_file),也可以是特殊文件(例如目录)。因此,本质上,如果提供的路径以任何形式存在于文件系统中,则此函数返回 true(尽管有一些例外,例如损坏的符号链接)。

os.path.isdir(path) 反过来只会在路径指向目录时返回 true

于 2014-07-16T20:24:38.883 回答