What is different between makedirs and mkdir of os?
I am confused to use about these two os
methods to create the new directory.
Please give me some example in Python.
Solution 1:
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.
Solution 2:
(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