【问题标题】:Python pathlib make directories if they don’t exist如果目录不存在,Python pathlib 创建目录
【发布时间】:2018-05-01 02:52:32
【问题描述】:

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

【问题讨论】:

    标签: python pathlib


    【解决方案1】:

    是的,就是Path.mkdir

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

    来自the docs

    如果 parents 为真,则此路径的任何缺失父级都将创建为 需要;它们是使用默认权限创建的,而不采用 考虑到模式(模仿 POSIX mkdir -p 命令)。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        即。 '/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)
        

        【讨论】:

        • 不错!这是最简洁的示例并且运行良好。
        • 甚至更短的 Path(filepath).parent
        猜你喜欢
        • 1970-01-01
        • 2017-01-01
        • 1970-01-01
        • 2018-08-01
        • 2014-05-19
        • 1970-01-01
        • 2014-02-07
        • 1970-01-01
        • 2015-05-10
        相关资源
        最近更新 更多