Python pathlib 创建不存在的目录

问题描述 投票:0回答:4

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

python pathlib
4个回答
371
投票

是的,那就是

Path.mkdir
:

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

来自文档

如果 parents 为 true,则该路径的任何缺失的父路径都将创建为 需要;它们是使用默认权限创建的,而不需要 考虑mode(模仿 POSIX

mkdir -p
命令)。

如果 parents 为 false(默认值),则缺失的父级会引发

FileNotFoundError

如果 exist_ok 为 false(默认值),则在以下情况下引发

FileExistsError
: 目标目录已经存在。

如果 exist_ok 为 true,

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


19
投票

如果您的路径末尾有一个文件,您不希望将其制作为目录。

例如

/existing_dir/not_existing_dir/another_dir/a_file

然后使用

PurePath.parents
。但好处是,因为 Paths 继承了 Pure Paths 的属性,所以你可以简单地做

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

14
投票

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

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")

-1
投票

创建不存在的目录/文件的通用功能

def check_and_create_path(self, path: Path):
        path_way = path.parent if path.is_file() else path

        path_way.mkdir(parents=True, exist_ok=True)

        if not path.exists():
            path.touch()
© www.soinside.com 2019 - 2024. All rights reserved.