'What is different between makedirs and mkdir of os?
I am confused to use about these two osmethods to create the new directory.
Please give me some example in Python.
Solution 1:[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:[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
Solution 3:[3]
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.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | SuperBiasedMan |
| Solution 2 | Yunqing Gong |
| Solution 3 | Med_siraj |
