我正在尝试刷新或重新加载在脚本中导入的整个文件,在该脚本中我曾经更改了该文件中的某些内容,然后使用该脚本重新加载了在自身中导入的文件。
在使用包含导入文件的脚本对其进行更改后,如何刷新作为模块导入的脚本文件。
这就是我要实现的目标
#lists_values.py
Christine = [0,0,0]
George = [900,123,1]
#suppose Ralf = [ 0, 0, 0 ] is going at this position soon.
#main.py
from lists_values import *
import lists_values
def insertRalf():
with open("lists_values.py", "a") as myfile:
myfile.write("Ralf = [0, 0, 0]\n")
insertRalf()
def resultView():
#Maybe some code to refresh the file I imported? Which is the lists_value since I added another list I want to print it.
#Print the NEW values of lists_values
fd = open("lists_values.py", "r")
print(fd.read())
fd.close()
#My goal is to see the new value 'Ralf', but since I imported the file when it was still unchanged, I wont see any Ralf if I print it now.
resultView()
答案 0 :(得分:0)
欢迎使用Stackoverflow。有更好的方法来做您想做的事!
您似乎正在使用values
模块作为某种命名空间。仅将数据存储在某个文件中会更明智。如果您阅读shelve
module的文档,您会发现对于简单的值和字符串键,它在一定范围内充当磁盘上的字典。
在Python命名空间中动态放置名称是一种“代码味道”-由于您不知道将定义什么名称,因此最终还必须使用getattr
或类似乏味的内容来动态访问它们。