[英]why os module has no way to delete non-empty directory?
Python 有 3 个主要的删除东西的功能
os.remove / os.unlink
In [2]: os.remove?
Signature: os.remove(path, *, dir_fd=None)
Docstring:
Remove a file (same as unlink()).
操作系统.rmdir
In [3]: os.rmdir?
Signature: os.rmdir(path, *, dir_fd=None)
Docstring:
Remove a directory.
但这不能删除非空目录,可以看出:
In [4]: os.rmdir('bla')
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-4-1907b7b0ecd9> in <module>
----> 1 os.rmdir('bla')
OSError: [Errno 39] Directory not empty: 'bla'
解决方案是第3个function: shutil.rmtree
我的问题是,为什么我们没有一个通用的 function 用于所有这些操作? (壳牌rm
的简单包装器,带有"r" / "f"
选项)
os
模块不是 shell 命令的包装器。 os.rmdir
是 C rmdir
调用的包装器,这是一个不能删除整个目录树的低级操作。 同样, os.unlink
是 C unlink
function 的包装器。 ( os.remove
也是 C unlink
的包装,而不是 C remove
,令人困惑。)
如果您想要更高级别的操作,其中一些在shutil
中可用。 例如, shutil.rmtree
可以删除整个目录树。 这不是os.rmdir
的默认行为,因为这容易出错且成本更高。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.