跳到主要内容

Python 程序安全创建嵌套目录

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

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

目录结构

示例 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块捕获并执行块内的语句。