如何覆盖一个文件夹,如果它已经存在时,创建与 makdirs?

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

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

程序将使用该文件夹将文本文件写入该文件夹。但是下次我的程序打开时,我想从一个全新的空文件夹开始。

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

95407 次浏览
import os
import shutil


dir = 'path_to_my_folder'
if os.path.exists(dir):
shutil.rmtree(dir)
os.makedirs(dir)
import os
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)

这个怎么样? 看看 ShutilPython库!

说吧

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

这里有一个 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)

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

dir = 'path_to_my_folder'
shutil.rmtree(dir, ignore_errors=True)
os.makedirs(dir)
try:
os.mkdir(path)
except FileExistsError:
pass