gpt4 book ai didi

python - 在Python中从单个文件系统中删除目录内容

转载 作者:行者123 更新时间:2023-12-01 05:31:16 40 4
gpt4 key购买 nike

rm 命令允许您执行以下操作:

rm -rf --one-file-system /path/to/dir/

如果该目录的内容安装了其他文件系统,则会出错(跳过删除)。

Python 中是否有模块允许我指定类似的行为?如果没有,强制执行这种限制的替代方案是什么?

最佳答案

没有模块可以为您执行此操作;你必须自己写。

但是 os 模块提供了编写它所需的一切。*

首先,os.walk可以遍历整个目录树。您可以os.stat每个目录并跳过那些 st_dev 与根目录不同的目录,或者您可以 os.path.ismount每个目录并跳过那些正确的目录。

这几乎正是 rm 在幕后所做的事情,当然它使用 fts (或其前身之一,在较旧的系统上)而不是 Python 函数。

有两个棘手的地方。

首先,与fts和类似函数不同,os.walk不会统计文件(或者更糟糕的是,它确实统计文件文件,但不会给您结果),因此您必须在每个 dirname 上显式调用 os.stat。 (或者使用第三方模块,如 scandirbetterwalkpy-fts 等)

其次,你必须自上而下地修剪walk(在自上而下模式下,如果你从dirnames参数中删除dirs,walk将不会递归进入它们),但在删除目录之前,您必须自下而上删除文件。使用像 fts 这样的 API,允许在同一次遍历中进行访问前和访问后,这不是问题,但是 os.walk 会让您选择一个或另一个。

但这应该足以让您开始这样做。如果您遇到困难,您可以随时提出新问题。

<小时/>

* 嗯,osos.path

关于python - 在Python中从单个文件系统中删除目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229018/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com