我的python项目具有以下文件结构:
/main.py
/functions
/functions/func1.py
/functions/func2.py
/functions/func3.py
/funcitons/__init__.py
每个func.py文件都有一个变量'CAN_USE'。在某些文件中,其他错误也是如此。 我怎样才能检查我的main.py中哪些func.py文件的'CAN_USE'变量等于true?
答案 0 :(得分:3)
使用pkgutil
,您可以找到包中的所有模块:
import pkgutil
def usable_modules(package_name):
modules = pkgutil.iter_modules([package_name])
usable = []
for importer, name, ispkg in modules:
module = pkgutil.find_loader('{0}.{1}'.format(package_name, name)).\
load_module(name)
if hasattr(module, 'CAN_USE') and module.CAN_USE:
usable.append(module)
return usable
print(usable_modules('functions'))
请注意,这还会检查程序包中的其他模块(例如__init__.py
)。如果您愿意,可以在循环中过滤掉它们(例如if not name.startswith('func'): continue
)。
答案 1 :(得分:0)
在main.py
中试试from functions import func1, func2, func3
print func1.CAN_USE
print func2.CAN_USE
print func3.CAN_USE