如何覆盖一个文件夹,如果它与makedirs创建时,它已经存在?(How to overwrite

2019-06-26 13:02发布

下面的代码允许我创建一个目录,如果它不存在。

dir = 'path_to_my_folder'
if not os.path.exists(dir):
    os.makedirs(dir)

该目录是一个程序用来文本文件写入到该文件夹​​。 但我想开始一个全新的空文件夹下一个我的程序打开的时间。

有没有办法覆盖的文件夹(创建一个新的,具有相同的名称),如果它已经存在?

Answer 1:

dir = 'path_to_my_folder'
if os.path.exists(dir):
    shutil.rmtree(dir)
os.makedirs(dir)


Answer 2:

import shutil

path = 'path_to_my_folder'
if not os.path.exists(path):
    os.makedirs(path)
else:
    shutil.rmtree(path)           #removes all the subdirectories!
    os.makedirs(path)

那个怎么样? 看看shutil的Python库!



Answer 3:

os.path.exists(dir)检查建议,但可以通过使用被避免ignore_errors

dir = 'path_to_my_folder'
shutil.rmtree(dir, ignore_errors=True)
os.makedirs(dir)


Answer 4:

说啊

dir = 'path_to_my_folder'
if not os.path.exists(dir): # if the directory does not exist
    os.makedirs(dir) # make the directory
else: # the directory exists
    #removes all files in a folder
    for the_file in os.listdir(dir):
        file_path = os.path.join(dir, the_file)
        try:
            if os.path.isfile(file_path):
                os.unlink(file_path) # unlink (delete) the file
        except Exception, e:
            print e


Answer 5:

EAFP (看到这里)版本

import errno
import os
from shutil import rmtree
from uuid import uuid4

path = 'path_to_my_folder'
temp_path = os.path.dirname(path)+'/'+str(uuid4())
try:
    os.renames(path, temp_path)
except OSError as exception:
    if exception.errno != errno.ENOENT:
        raise
else:
    rmtree(temp_path)
os.mkdir(path)


Answer 6:

try:
    os.mkdir(path)
except FileExistsError:
    pass


文章来源: How to overwrite a folder if it already exists when creating it with makedirs?