用于安全创建嵌套目录的 Python 程序

要理解这个例子,你应该具备以下 Python 编程 主题的知识


根据您使用的 Python 版本,有不同的方法可以创建嵌套目录。在本例中,我们将创建如下图所示的目录。

Directory Structure
目录结构

示例 1:使用 pathlib.Path.mkdir

对于 Python 3.5 及以上版本,您可以使用 pathlib.Path.mkdir 来创建嵌套目录。

from pathlib import Path
Path("/root/dirA/dirB").mkdir(parents=True, exist_ok=True)
  • pathlib 库中导入 Path 类。
  • 调用模块 mkdir(),并传入两个参数:parents 和 exist_ok
  • 默认情况下,parents 设置为 False。在这种情况下,如果父目录不存在,则会抛出 FileNotFoundError。例如,如果您想创建一个嵌套目录 /folder1/folder2/folder3,而 folder1 (父目录) 已经不存在,那么默认会引发 FileNotFoundError。因此,我们将其设置为 True
  • exist_ok 默认为 False。如果目录已存在,则会引发 FileExistsError。将其设置为 True 以防止此错误。

注意:您应该提供目录的完整路径(绝对路径)(而不是相对路径)。如果目录已存在,上述代码不会引发异常。


示例 2:使用 os.makedirs

对于 Python 3.2 及以上版本,您可以使用 os.makedirs

import os

os.makedirs("/root/dirA/dirB")
  • 使用 os 模块的 makedirs() 方法,可以简单地创建一个嵌套目录。
  • 传递的参数是我们想要创建的嵌套目录。

您应该提供目录的完整路径(绝对路径)(而不是相对路径)。如果目录已存在,上述代码不会引发异常。


示例 3:使用 distutils.dir_util

import distutils.dir_util

distutils.dir_util.mkpath("/root/dirA/dirB")

本示例也与示例 2 类似。这里使用 mkpath() 代替 makedirs()

您应该提供目录的完整路径(绝对路径)(而不是相对路径)。如果目录已存在,上述代码不会引发异常。


示例 4:如果目录已存在则引发异常

import os

try:
    os.makedirs("/dirA/dirB")
except FileExistsError:
    print("File already exists")

本示例与示例 2 类似。

  • 该语句被放在 try 块内。
  • 如果目录已经存在,FileExistsError 会被 except 块捕获,并运行块内的语句。

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战