How to overwrite a folder if it already exists when creating it with makedirs?
下面的代码允许我创建一个目录,如果它不存在的话。
1 2 3 | dir = 'path_to_my_folder' if not os.path.exists(dir): os.makedirs(dir) |
程序将使用该文件夹将文本文件写入该文件夹。但下次程序打开时,我想从一个全新的空文件夹开始。
如果文件夹已经存在,是否有方法覆盖它(并创建一个同名的新文件夹)?
1 2 3 4 | dir = 'path_to_my_folder' if os.path.exists(dir): shutil.rmtree(dir) os.makedirs(dir) |
1 2 3 4 5 6 7 8 | 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的
建议使用
1 2 3 | dir = 'path_to_my_folder' shutil.rmtree(dir, ignore_errors=True) os.makedirs(dir) |
只要说
1 2 3 4 5 6 7 8 9 10 11 12 | 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(参见此处)版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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) |