123

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

4

3 回答 3

218

是的,那就是Path.mkdir

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

文档

如果parents为真,则根据需要创建此路径的任何缺少的 parent;它们是使用默认权限创建的,不考虑 模式(模仿 POSIXmkdir -p命令)。

如果parents为 false(默认值),则缺少的 parent raise FileNotFoundError

如果exist_ok为false(默认值),FileExistsError则在目标目录已存在时引发。

如果exist_ok为真,FileExistsError异常将被忽略(与POSIX 命令的行为相同mkdir -p),但前提是最后一个路径组件不是现有的非目录文件。

于 2018-05-01T03:00:44.090 回答
6

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

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")
于 2020-06-03T08:56:37.657 回答
2

添加到Wim的答案。如果您的路径末尾有一个您不希望作为目录的文件。

IE。'/existing_dir/not_existing_dir/another_dir/a_file'

然后你使用 PurePath.parents。但好的是因为路径继承了纯路径的属性,那么你可以简单地做

filepath = '/existing_dir/not_existing_dir/another_dir/a_file'
pathlib.Path(filepath).parents[0].mkdir(parents=True, exist_ok=True)
于 2021-11-19T00:09:02.857 回答