66

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

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

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

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

4

6 回答 6

107
import os
import shutil

dir = 'path_to_my_folder'
if os.path.exists(dir):
    shutil.rmtree(dir)
os.makedirs(dir)
于 2012-07-26T00:22:39.073 回答
27
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图书馆!

于 2012-07-26T00:23:35.360 回答
9

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

dir = 'path_to_my_folder'
shutil.rmtree(dir, ignore_errors=True)
os.makedirs(dir)
于 2018-03-12T14:15:38.547 回答
1

说啊

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
于 2012-07-26T00:26:31.383 回答
1

这是一个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)
于 2015-02-22T20:21:35.243 回答
0
try:
    os.mkdir(path)
except FileExistsError:
    pass
于 2019-05-23T05:01:55.733 回答