Makdir 和 os 的 mkdir 有什么不同?

我对使用这两个 os方法来创建新目录感到困惑。

请给我一些 Python 的例子。

67837 次浏览

makedirs() creates all the intermediate directories if they don't exist (just like mkdir -p in bash).

mkdir() can create a single sub-directory, and will throw an exception if intermediate directories that don't exist are specified.

Either can be used to create a single 'leaf' directory (dirA):

  • os.mkdir('dirA')
  • os.makedirs('dirA')

But makedirs must be used to create 'branches':

  • os.makedirs('dirA/dirB') will work [the entire structure is created]

mkdir can work here if dirA already exists, but if it doesn't an error will be thrown.

Note that unlike mkdir -p in bash, either will fail if the leaf already exists.

(Can not comment, just add to NPE's answer.)

In Python3, os.makedirs has a default parameter exist_ok=False.
If you set it to True, then os.makedirs will not throw any exception if the leaf exists.
(While os.mkdir doesn't have this parameter.)

Just like this:

os.makedirs('dirA', exist_ok=True)

P.S.
You can type ? before the name of a method in IPython shell to take a quick look at the documentation.
e.g.:

>>> import os
>>> ? os.makedirs

makedirs : Recursive directory creation function. Like mkdir(), but makes all intermediate-level directories needed to contain the leaf directory. Raises an error exception if the leaf directory already exists or cannot be created.