Python安全创建目录的方法

时间:2022-06-01 18:45:10

在介绍Python安全创建目录之前,先举一个不安全创建目录的方式:

if not os.path.exists(directory):
    os.makedirs(directory)

在例子里,先判断目录是否存在,然后创建目录。这种方式是不安全的,它会导致竞争条件。在os.path.exists()和os.makedirs()之间的时间可能会出现目录被创建。不推荐使用这种方式。

Python 3.5+:

在python 3.5+可以使用pathlib的mkdir:

import pathlib
pathlib.Path('/my/directory').mkdir(parents=True, exist_ok=True) 

pathlib的mkdir接收两个参数:

  • parents:如果父目录不存在,是否创建父目录。
  • exist_ok:只有在目录不存在时创建目录,目录已存在时不会抛出异常。

Python 3.2+:

使用pathlib2

python3.2+是和Python3.5+用法一样,但是需要导入的是pathlib2,而不是pathlib

使用os

import os
os.makedirs(path, exist_ok=True)

Python 2.7+:

使用pathlib2

使用方法和Python3.2一样,导入的是pathlib2.

使用os

为了避免出现竞争条件,使用os需要使用try语句。

import os
try: 
    os.makedirs(path)
except OSError:
    if not os.path.isdir(path):
        raise