如何删除目录? os.removedirs和os.rmdir仅用于删除空目录吗?

时间:2018-02-20 19:26:03

标签: python python-3.x python-2.7

每当我尝试使用它们删除目录中的dirs时,我都会收到此错误消息

import os
os.chdir('/Users/mustafa/Desktop')
os.makedirs('new-file/sub-file')
os.removedirs('new-file') 
  

“/ Library / Frameworks / Python.framework / Versions / 2.7 / lib / python2.7 / os.py”,第170行,在者       命令rmdir(名称)   OSError:[Errno 66]目录不为空:'new-file'

但是我想我看到人们使用这些命令来删除非空的目录,那么我做错了什么?感谢

1 个答案:

答案 0 :(得分:7)

您应该使用shutil.rmtree递归删除目录:

import shutil
shutil.rmtree('/path/to/your/dir/')

回答你的问题:

  

os.removedirsos.rmdir仅用于删除空目录吗?

是的,它们只能用于删除空目录。

以下是官方Python文档中的描述,其中显然有统计数据。

os.rmdir(path, *, dir_fd=None)

  

删除(删除)目录路径。 仅在目录为空时才有效,否则会引发OSError。为了删除整个目录树,可以使用shutil.rmtree()。​​

os.removedirs(name)

  

递归删除目录。像rmdir()一样工作,除非成功删除叶子目录,removeirs()尝试连续删除路径中提到的每个父目录,直到引发错误(被忽略,因为它通常意味着父目录是不是空的)。例如,os.removedirs('foo / bar / baz')将首先删除目录'foo / bar / baz',然后删除'foo / bar'和'foo'如果它们是空的。如果无法成功删除叶子目录,则引发OSError。