代码:
import sys
import os
def mkdir_bk(dirname, verbose=False, nobackup=False):
if os.path.exists(dirname) and nobackup:
# 如果目录已经存在并且nobackup为True,则删除该目录
shutil.rmtree(dirname)
elif os.path.exists(dirname):
# 如果目录已经存在但nobackup不为True,则备份该目录
if verbose:
print('Directory ' + dirname + ' exists. Backing it up.')
basename = os.path.basename(dirname)
n = 1
bk_dir = '#' + basename + '_' + str(n) + '#'
while os.path.exists(dirname.replace(basename, bk_dir)):
n += 1
bk_dir = '#' + basename + '_' + str(n) + '#'
os.rename(dirname, dirname.replace(basename, bk_dir))
os.makedirs(dirname)
该函数采用了三个参数:
- dirname:要创建的目录的路径
- verbose:默认为False,如果设置为True,则在备份目录时输出信息
- nobackup:默认为False,如果设置为True,则删除现有目录而不备份
函数的实现如下:
首先,如果目录已经存在并且nobackup为True,则使用shutil.rmtree函数删除该目录。如果目录已经存在但nobackup不为True,则备份该目录。备份的方式是在目录名前面添加“#”和数字,直到找到一个可用的目录名为止。然后使用os.rename函数将原目录名更改为备份目录名。最后,使用os.makedirs函数创建目录(无论是新目录还是删除后备份的目录)。