每当我尝试使用它们删除目录中的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'
但是我想我看到人们使用这些命令来删除非空的目录,那么我做错了什么?感谢
答案 0 :(得分:7)
您应该使用shutil.rmtree
递归删除目录:
import shutil
shutil.rmtree('/path/to/your/dir/')
回答你的问题:
os.removedirs
和os.rmdir
仅用于删除空目录吗?
是的,它们只能用于删除空目录。
以下是官方Python文档中的描述,其中显然有统计数据。
os.rmdir(path, *, dir_fd=None)
删除(删除)目录路径。 仅在目录为空时才有效,否则会引发OSError。为了删除整个目录树,可以使用shutil.rmtree()。
递归删除目录。像
rmdir()
一样工作,除非成功删除叶子目录,removeirs()尝试连续删除路径中提到的每个父目录,直到引发错误(被忽略,因为它通常意味着父目录是不是空的)。例如,os.removedirs('foo / bar / baz')将首先删除目录'foo / bar / baz',然后删除'foo / bar'和'foo'如果它们是空的。如果无法成功删除叶子目录,则引发OSError。