python中检测目录是否存在

How to find if directory exists in Python

在python中的os模块中,是否有一种方法来查找目录是否存在,比如:

1
2
>>> os.direxists(os.path.join(os.getcwd()), 'new_folder')) # in pseudocode
True/False


如果你不在乎是文件还是目录,你可以找os.path.isdiros.path.exists

例子:

1
2
3
import os
print(os.path.isdir("/home/el"))
print(os.path.exists("/home/el/myfile.txt"))


那么近!如果以当前存在的目录的名称传递,则os.path.isdir返回True。如果它不存在或不是一个目录,则返回False


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


python 3.4在标准库中引入了pathlib模块,它提供了一种面向对象的方法来处理文件系统路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.exists()
Out[6]: True

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

pathlib也可以通过pypi上的pathlib2模块在python 2.7上使用。


我们可以检查两个内置功能

1
os.path.isdir("directory")

它将给布尔值true指定的目录可用。

1
os.path.exists("directoryorfile")

如果指定的目录或文件可用,它将给出boolead true。

检查路径是否为目录;

os.path.isdir("directorypath")

如果路径是目录,则将为布尔值true


是,使用os.path.isdir(path)


如:

1
2
In [3]: os.path.exists('/d/temp')
Out[3]: True

可以肯定的是,可能会扔一个os.path.isdir(...)


只需提供os.stat版本(python 2):

1
2
3
4
5
6
7
8
import os, stat, errno
def CheckIsDir(directory):
  try:
    return stat.S_ISDIR(os.stat(directory).st_mode)
  except OSError, e:
    if e.errno == errno.ENOENT:
      return False
    raise

操作系统为您提供了许多这样的功能:

1
2
3
import os
os.path.isdir(dir_in) #True/False: check if this is a directory
os.listdir(dir_in)    #gets you a list of all files and directories under dir_in

如果输入路径无效,listdir将引发异常。


1
2
3
4
5
#You can also check it get help for you

if not os.path.isdir('mydir'):
    print('new directry has been created')
    os.system('mkdir mydir')