Python pathlib 创建不存在的目录

如果我想指定一个路径来将文件保存到该路径中不存在的目录,那么是否可以在一行代码中使用 pathlib 库来实现这一点?

82720 次浏览

是的,这就是 Path.mkdir:

pathlib.Path('/tmp/sub1/sub2').mkdir(parents=True, exist_ok=True)

来自 那些文件:

如果 父母为 true,则此路径的任何缺失父级创建为 它们是使用默认权限创建的,而不需要使用 Mode into account (模仿 POSIX mkdir -p命令)。

如果 父母为 false (默认值) ,则引发缺少的父级 FileNotFoundError.

如果 好的为 false (默认值) ,则在 目标目录已经存在。

如果 好的为 true,则将忽略 FileExistsError异常(相同 行为) ,但仅当最后一个路径 组件不是现有的非目录文件。

这为路径已经存在的情况提供了额外的控制:

path = Path.cwd() / 'new' / 'hi' / 'there'
try:
path.mkdir(parents=True, exist_ok=False)
except FileExistsError:
print("Folder is already there")
else:
print("Folder was created")

增加了维姆的回答。如果您的路径末尾有一个您不希望作为目录的文件。

“/living _ dir/not _ living _ dir/another _ dir/a _ file”

然后使用 PurePath.father。但是好的一面是,因为 Path 继承了 Pure Path 的属性,所以您可以简单地这样做

filepath = '/existing_dir/not_existing_dir/another_dir/a_file'
pathlib.Path(filepath).parents[0].mkdir(parents=True, exist_ok=True)