mkdir -p functionality in Python [duplicate]
For Python ≥ 3.5, use
import pathlibpathlib.Path("/tmp/path/to/desired/directory").mkdir(parents=True, exist_ok=True)
exist_ok parameter was added in Python 3.5.
For Python ≥ 3.2,
os.makedirs has an optional third argument
exist_ok that, when
True, enables the
mkdir -p functionality—unless
mode is provided and the existing directory has different permissions than the intended ones; in that case,
OSError is raised as previously:
import osos.makedirs("/tmp/path/to/desired/directory", exist_ok=True)
For even older versions of Python, you can use
os.makedirs and ignore the error:
import errno import osdef mkdir_p(path): try: os.makedirs(path) except OSError as exc: # Python ≥ 2.5 if exc.errno == errno.EEXIST and os.path.isdir(path): pass # possibly handle other errno cases here, otherwise finally: else: raise
In Python >=3.2, that's
In earlier versions, use @tzot's answer.
This is easier than trapping the exception:
import osif not os.path.exists(...): os.makedirs(...)
Disclaimer This approach requires two system calls which is more susceptible to race conditions under certain environments/conditions. If you're writing something more sophisticated than a simple throwaway script running in a controlled environment, you're better off going with the accepted answer that requires only one system call.
I'm tempted to delete this answer, but I think there's value in the comment thread below. As such, I'm converting it to a wiki.