p functionality in Python
This question already has an answer here:
mkdir -p
functionality as follows:
import errno
import os
def 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
else:
raise
Update
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.
Update 2
For Python ≥ 3.5, there is also pathlib.Path.mkdir
:
import pathlib
pathlib.Path("/tmp/path/to/desired/directory").mkdir(parents=True, exist_ok=True)
The exist_ok
parameter was added in Python 3.5.
In Python >=3.2, that's
os.makedirs(path, exist_ok=True)
In earlier versions, use @tzot's answer.
This is easier than trapping the exception:
import os
if 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.
UPDATE 2012-07-27
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.
链接地址: http://www.djcxy.com/p/9264.html上一篇: 如何创建新文件夹?
下一篇: Python中的p函数