如何从仅含裸数据的Python模块中导入并提取变量值?
解决方法:访问加载后的模块变量
别担心,其实你离拿到变量值只差一步啦!当你用imp.load_source加载Python文件时,它会返回一个模块对象,你只需要通过这个对象直接访问里面的全局变量就行。
步骤1:接收模块对象并访问变量
修改你的代码,把imp.load_source的返回值存下来,然后通过这个模块对象获取TL和aaa:
import imp # 加载模块,将返回的模块对象赋值给变量 foo_module = imp.load_source('foo', r'<path_to_foo>\foo.py') # 直接通过模块对象访问全局变量 tl_data = foo_module.TL aaa_data = foo_module.aaa # 验证结果 print("TL的值:", tl_data) print("aaa的值:", aaa_data)
运行这段代码,你就能拿到foo.py里定义的TL字典和aaa字符串的值了。
注意:Python 3.4+ 推荐的替代方案
imp模块在Python 3.4之后已经被标记为废弃,官方推荐使用importlib模块来实现同样的功能,代码如下:
from importlib.machinery import SourceFileLoader # 加载模块并获取模块对象 foo_module = SourceFileLoader('foo', r'<path_to_foo>\foo.py').load_module() # 同样的方式访问变量 print(foo_module.TL) print(foo_module.aaa)
这个方法和imp.load_source的效果完全一致,但更符合Python的现代规范。
内容的提问来源于stack exchange,提问作者user2678074
相关产品推荐
相关产品推荐

