关于python:在路径上制作所有dirs的优雅方式

Elegant way to make all dirs in a path

以下是四条路径:

1
2
3
4
p1=r'\foo\bar\foobar.txt'
p2=r'\foo\bar\foo\foo\foobar.txt'
p3=r'\foo\bar\foo\foo2\foobar.txt'
p4=r'\foo2\bar\foo\foo\foobar.txt'

目录可能存在于驱动器上,也可能不存在于驱动器上。在每个路径中创建目录最优雅的方法是什么?

我在考虑在循环中使用os.path.split(),并使用os.path.exists检查dir,但我不知道有更好的方法。


你要找的是能满足你需求的os.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.

因为如果叶目录已经存在,它就会失败,所以您需要在调用os.makedirs()之前测试是否存在。


在python 3.6+上,您可以执行以下操作:

1
2
3
4
import pathlib

path = pathlib.Path(p4)
path.parent.mkdir(parents=True, exist_ok=True)