如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]
Posted
技术标签:
【中文标题】如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]【英文标题】:How to remove a directory? Is os.removedirs and os.rmdir only used to delete empty directories? [duplicate]如何删除目录? os.removedirs 和 os.rmdir 是否只用于删除空目录? [复制] 【发布时间】:2018-07-31 06:12:25 【问题描述】:每当我尝试使用它们来删除带有东西的目录时,我都会收到此错误消息
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】:您应该使用shutil.rmtree
递归删除目录:
import shutil
shutil.rmtree('/path/to/your/dir/')
回答你的问题:
os.removedirs
和os.rmdir
是否只用于删除空目录?
是的,它们只能用于删除空目录。
以下是来自官方 Python 文档的描述,其中清楚地说明了这一点。
os.rmdir(path, *, dir_fd=None)
移除(删除)目录路径。 仅在目录为空时有效,否则会引发 OSError。为了删除整个目录树,可以使用 shutil.rmtree()。
os.removedirs(name)
递归删除目录。像
rmdir()
一样工作,除了,如果叶目录被成功删除,removedirs() 会尝试连续删除路径中提到的每个父目录,直到引发错误(这被忽略,因为它通常意味着父目录不为空)。例如,os.removedirs('foo/bar/baz') 会先删除目录 'foo/bar/baz',然后删除 'foo/bar' 和 'foo' 如果它们为空 >。如果无法成功删除叶目录,则引发 OSError。
【讨论】:
以上是关于如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章