如果我想指定一个路径来保存文件并创建该路径中不存在的目录,是否可以在一行代码中使用 pathlib 库来做到这一点?
57548 次
3 回答
218
是的,那就是Path.mkdir
:
pathlib.Path('/tmp/sub1/sub2').mkdir(parents=True, exist_ok=True)
从文档:
如果parents为真,则根据需要创建此路径的任何缺少的 parent;它们是使用默认权限创建的,不考虑 模式(模仿 POSIX
mkdir -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 回答