如何从Python文件中实时刷新获取导入的变量值
问题根因
- 存在文件名笔误:代码中写入变量时打开的是
testowymodul.py,但你实际导入的模块文件是testmodule.py,修改内容根本没有落到被导入的文件上。 - Python默认导入缓存机制:模块首次被导入后会缓存在
sys.modules字典中,后续重复执行import语句不会重新读取磁盘上的最新文件内容,因此始终拿到初始值。
解决方案
步骤1:修正文件名笔误
将写入文件的代码中文件名改为testmodule.py,保证修改和导入的是同一个文件。
步骤2:每次读取变量前重载模块
使用Python标准库importlib的reload方法强制重新加载模块,获取磁盘上的最新内容。
修正后完整代码
import pprint import importlib import testmodule while __name__ == '__main__': # 重载模块,读取最新内容 importlib.reload(testmodule) variableFromFile = testmodule.var print("Variable from file is "+str(variableFromFile)) print("Enter variable:") variable = input() # 修正文件名笔误 Plik = open('testmodule.py','w') Plik.write('var='+variable) Plik.close()
补充说明
如果不需要通过Python模块的方式导入变量,更推荐使用JSON、INI等通用配置文件格式存储变量,读写更简单,也不会触发模块缓存问题。
内容的提问来源于stack exchange,提问作者viye
相关产品推荐
相关产品推荐

