Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何删除目录?os.removedirs和os.rmdir是否仅用于删除空目录?_Python_Python 3.x_Python 2.7 - Fatal编程技术网

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

Python 如何删除目录?os.removedirs和os.rmdir是否仅用于删除空目录?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,每当我试图使用它们来删除包含内容的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中的第170行 rmdir(姓名) OSError:[Er

每当我试图使用它们来删除包含内容的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中的第170行 rmdir(姓名) OSError:[Errno 66]目录不为空:“新文件”

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

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

import shutil
shutil.rmtree('/path/to/your/dir/')
回答你的问题:

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

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


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

删除目录路径仅在目录为空时工作,否则将引发OSError。为了删除整个目录树,可以使用shutil.rmtree()

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