我想运行一个python脚本,删除输出目录(如果存在),然后创建它。如果它不存在,它只是创建它。代码如下:
if os.path.exists(out_dir):
shutil.rmtree(out_dir)
os.makedirs(out_dir)
else:
os.makedirs(out_dir)
但是,如果在运行此代码时输出目录已存在,则会出错:
WindowsError:[错误183]当该文件已存在时无法创建文件:
为什么不起作用?
答案 0 :(得分:1)
在if条件体中,可能是shutil.rmtree(out_dir)无法删除现有文件夹的情况,在下一行中,您尝试使用os.makedirs(out_dir)创建新目录。
答案 1 :(得分:1)
也许使用os.path.isdir()
代替?
如果目录中的文件与文件夹
os.path.exists()
可能为True
答案 2 :(得分:1)
rmtree应该可以工作。
试试这个
os.rmdir(os.path.join(root,name))
请注意,如果存在只读文件,则rmtree将失败。
答案 3 :(得分:1)
try:
os.makedirs(out_dir)
except OSError:
shutil.rmtree(out_dir)
os.makedirs(out_dir)
makedirs如果leaf目录已存在或无法创建,则引发错误异常。