首页 > 解决方案 > 列出目录下所有有效/可导入的 Python 文件

问题描述

我需要获取当前模块下每个有效/可导入 Python 文件的列表,即递归地向下当前目录。

有没有一个库可以做到这一点?我没找到一个。

Airflow、mypy、black、pytest、unittest 等都使用某种递归目录遍历来发现有效的 Python 文件,但是这样做没有标准,每个 lib 都自己实现了这个功能。

如果没有一个好的库来抽象这一点,是否有任何已知的考虑投资于一种天真/简单的方法,即列出.py包含文件的目录下的所有文件__init__.py并根据排除列表排除一些目录(例如.*__pycache__等) ?

我只对 Python 3.5+ 感兴趣。

标签: python-3.xrecursiontraversalos.walkscandir

解决方案


我没有将实现硬编码到我自己的项目中,而是为此发布了一个小型开源库。

pycollect在 MIT 下发布,其作用域是收集给定根目录的任何有效 Python 文件。它包括对行为的一些基本调整并支持排除模式。虽然仅用于收集 Python 文件,但它可以很容易地分叉成为更通用的文件/目录收集器。

截至撰写本文时,我是官方维护者。


推荐阅读