python - 如何将linux的find命令的 `maxdepth`选项模拟到python

标签 python linux python-3.x

我想要一个针对 linux 中的 maxdepth 选项的标准 python 解决方案。我可以用 os.walk() 模拟 find 命令,但我想限制代码级别的深度。我不想在我的代码中使用 subprocessPopen

最佳答案

您可以递归地遍历所有路径,直到达到一定深度。此解决方案不是特别有效,但它应该可以帮助您入门(需要 Python 3.3 或更高版本):

def find(path, maxdepth=-1, depth=0):
    path = "%s/" % path if path[-1] != "/" else path
    for f in os.listdir(path):
        p = "%s%s" % (path, f)
        yield p
        try:
            if (depth < maxdepth or maxdepth == -1) and os.path.isdir(p):
                yield from find(p, maxdepth, depth + 1)
        except OSError:
            pass

用法:

find(path, maxdepth)
# maxdepth=-1 means infinite depth (default)

关于python - 如何将linux的find命令的 `maxdepth`选项模拟到python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43654654/

相关文章:

javascript - 从像素阵列在网页上渲染图像

linux - Linux 上的 native 消息传递不起作用

python - 用py2neo查询neo4j的写性能

python - 如何过滤 DataFrame 列表中的数字(n>3)?

python - 如何在 python 中添加两个 OrderedDict 对象的值,保持顺序?

linux - QMenu 关闭时在 Mac OS 和 Linux 上发出的 QEvent 类型的差异

c - fatal error : cuda. h:没有那个文件或目录

python - 如何在Windows中使用python调用可执行文件作为独立进程

python - 在 macOS Sierra 上拖动 QTreeWidgetItem 时出现奇怪的行为

python - 从 subprocess.run 运行带有 "./"的二进制文件