Python安全创建目录的方法

在介绍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

版权声明:著作权归作者所有。

相关推荐

Java创建文件的常用方法

Java创建文件有几种常用的方法File.createNewFile()创建空白文件java.io.File类里的方法createNewFile()可以用来创建文件。createNewFile()新建的是空文件。创建文件首先要使用File类构建将要被创建的文件,然后再调用createNewFile()把新文件创建出来。createNewFile()的结果分为三种情况:新文件创建成功返回true。如

Python合并多个字典的方法

示例x = {'a': 1, 'b': 2} y = {'b': 3, 'c': 4} 相同属性合并,后者覆盖前者的值。x和y合并后>>> z {'a': 1, 'b': 3, 'c': 4} Python 3.

Python校验处理用户输入的方法

Python处理用户输入需要考虑几个问题:用户输入的数据是否合法用户输入非法数据是否会抛出异常用户输入非法数据后,给出友好提示并等待继续输入在Python里比较简单的做法是使用一直循环,如果用户输入错误数据,执行continue继续等待用户输入,如果用户输入正确数据,执行break跳出循环。用户输入可能会抛出异常这里需要使用try-catch来捕获用户输入非法数据导致的异常。python 

Python 函数内修改关键字参数**kw的安全性考虑

Python定义函数常常会使用关键字参数**kw来接收字典值。基本语法def f(p1,p2,**kw) **kw将接收0个或任意个含参数名的参数,这些关键字参数在函数内部会自动组合为一个字典。示例def person(**kw)     for k in kw:    &nbs

Python判断文件是否存在的方法

方法一使用os.path.exists判断路径是否存在,包括文件夹和文件。import os.path os.path.exists(my_file) 方法二使用os.path.isfile检查路径是否为文件,如果文件存在返回True。import os.path os.path.isfile(my_file)  方法三面向对象文件系统路径操作包pathlib2,pa