最近想设计一个普适性高的函数绘图,可以用户手动输入函数方程,但是输入的方程为字符串形式,所以我就考虑用f.writelines的方式实时更新一个.py文件,并在生成后调用其中的方法来生成图像,具体如下:
import os
import func1
new_lines = "import numpy as np\n" \
"import matplotlib as plt\n\n\n" \
"def draw_line():\n" \
" x = np.linspace(0, 100, 100)\n" \
" y = x\n" \
" plt.plot(x, y)\n" \
" plt.show()\n"
with open(os.path.join(os.getcwd(), "func1.py"), "w+") as f:
f.writelines(new_lines)
try:
func1.draw_line()
except Exception:
print("something is wrong here.....")
事实上,可以成功生成func1.py文件,并且也可以成功调用draw_line()方法,但是如果我不停止运行程序,连续修改func1.py中的文字,哪怕将func1.py中的内容清空,也只能显示第一次的方程绘图,但是f.readlines()能够成功读取真实的内容,请问这是为什么呢?