当前位置: 首页 > 知识库问答 >
问题:

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

乔宏峻
2023-03-14

每当我试图使用它们来删除包含内容的dir时,我都会收到此错误消息

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”,removedirs rmdir(name)OSError:[Errno 66]目录中的第170行非空:“新文件

然而,我认为我看到人们使用这些命令来删除不是空的目录,那么我做错了什么?谢谢

共有1个答案

东弘扬
2023-03-14

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

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

回答你的问题:

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

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

下面是官方Python文档中的描述,它清楚地说明了这一点。

os.rmdir(路径,*,dir_fd=无)

移除(删除)目录路径。只有当目录为空时才起作用,否则会引发OSError。为了删除整个目录树,可以使用shutil.rmtree()。

os.removedirs(名称)

递归删除目录。类似于rmdir()的工作原理,不同之处在于,如果成功地删除了叶子目录,则Remvedirs()会尝试连续删除path中提到的每个父目录,直到出现错误(该错误被忽略,因为它通常意味着父目录不是空的)。例如,os.removedirs('foo/bar/baz')将首先删除目录'foo/bar/baz',然后删除'foo/bar'和'foo',如果它们是空的。如果无法成功删除叶目录,则引发OSError。

 类似资料:
  • 问题内容: 当我尝试删除目录时,FirebaseStorage始终返回错误,即类似以下内容始终返回错误。 但是,删除文件可以正常工作,例如不会返回错误: 我在这里可能做错了什么?我不认为FirebaseStorage不支持它,因为从目录中一个接一个地删除文件会很la脚(特别是如果所述目录有100或1000个这样的目录)。 问题答案: 从Google网上论坛删除目录是不可能的。您必须在某个位置(在F

  • 问题内容: 在我的Node应用程序中,我需要删除一个包含一些文件的目录,但仅适用于空目录。我怎样才能做到这一点? 问题答案: 为此有一个名为(https://npmjs.org/package/rimraf)的模块。它提供的功能与 异步 用法: 同步 使用情况:

  • 嗨,当我想删除空目录时,我遇到以下错误: 警告:rmdir():目录不为空 功能: 当有文件时,它会在没有警告的情况下删除所有文件(也应该删除文件夹)

  • 和 mkdir 命令(创建空目录)恰好相反,rmdir(remove empty directories 的缩写)命令用于删除空目录,此命令的基本格式为: [root@localhost ~]# rmdir [-p] 目录名 -p 选项用于递归删除空目录。 【例 1】 [root@localhost ~]#rmdir cangls 就这么简单,命令后面加目录名称即可,但命令执行成功与否,取决于要删

  • 问题内容: 我想知道,删除包含所有文件的目录的最简单方法是什么? 我正在删除一个文件夹,但是,如果其中有文件,我将无法删除。 问题答案: 如今至少有两种选择。 在删除文件夹之前,请删除其所有文件和文件夹(这意味着递归!)。这是一个例子: } 如果您使用的是5.2+,则可以使用RecursiveIterator来实现,而无需自己实现递归:

  • 我在大学已经学习了4周的JavaScript,两周前在我自己的时间里开始学习Java。事实证明,它很有用,因为我们有一个项目,我们必须制定一个程序(这是我们为项目选择的)。 问题是,虽然我知道Java的大部分基础知识,但我对制作我们想要制作的程序知之甚少,我所有的其他团队成员甚至从未接触过Java,有些人甚至在课堂上与JavaScript作斗争。 对不起,顺便说一句,我只是想让人们了解我的来历。