Python_pkgutil.walk_packages_查询包下所有文件

pkgutil是Python自带的用于包管理相关操作的库。

pkgutil.walk_packages能根据包名找到包里面的数据文件

用法说明

目录结构

代码演示

import pkgutil
import conf

r = pkgutil.walk_packages(conf.__path__, conf.__name__ + ".")
for file_finder, modulename, is_pkg in r:
    print(
        file_finder,    # 文件查找器
        modulename,     # 返回所有目录文件拼接值。注意入参的要加".",不加,modulename就不会有"."
        is_pkg          # 目录为True,文件为False
    )

执行结果

应用场景

导入配置目录下所有模块

import pkgutil
import sys

import conf

conf_var = {}

r = pkgutil.walk_packages(conf.__path__, conf.__name__ + ".")
for file_finder, modulename, is_pkg in r:
    __import__(modulename)
    var_m = sys.modules[modulename]
    var_names = dir(var_m)
    for var_name in var_names:
        if var_name.isupper():
            conf_var[var_name] = getattr(var_m, var_name)

print(conf_var)
# 注意:此时不会获取到conf模块下 __init__.py中定义的变量

 

posted @ 2022-03-13 14:32  码上测  阅读(586)  评论(0编辑  收藏  举报