如果目录不存在,Python pathlib会生成目录

Jas*_*ca1 19 python pathlib

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

wim*_*wim 37

是的,那是Path.mkdir:

pathlib.Path('/tmp/sub1/sub2').mkdir(parents=True, exist_ok=True)
Run Code Online (Sandbox Code Playgroud)

  • 是的,效果也一样,但是您需要在路径两边加上括号,以免在最右边的字符串对象上调用.mkdir。 (3认同)
  • 将“exist_ok”设置为“true”时,mkdir是否会覆盖目录并再次创建它?或者它是否跳过(重新)创建目录,因为它已经存在? (3认同)
  • @PrithviBoinpally 后者 - 调用 `mypath.mkdir(exist_ok=True)` 不会引发错误,并且会完整保留与 `mypath` 关联的现有目录。 (3认同)

小智 17

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

IE。'/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).parents[0].mkdir(parents=True, exist_ok=True)
Run Code Online (Sandbox Code Playgroud)

  • 对于这里的复制猫 `pathlib.Path(path).parent.mkdir(parents=True, exit_ok=True)` (5认同)
  • 甚至更短的 Path(filepath).parent (4认同)

Kol*_*ril 13

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

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")
Run Code Online (Sandbox Code Playgroud)