大写的弱鸡 2021-09-14 11:24 采纳率: 0%
浏览 36

使用python程序以f.writelines的方式生成一个新的.py文件,能够成功f.readlines但是无法调用其中的函数

最近想设计一个普适性高的函数绘图,可以用户手动输入函数方程,但是输入的方程为字符串形式,所以我就考虑用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()能够成功读取真实的内容,请问这是为什么呢?

  • 写回答

2条回答 默认 最新

  • TerraJuly 2021-09-14 15:30
    关注

    func1.py在import的时候就固定了,你可以了解下python的exec()这个函数,并不需要将代码写入一个新文件中。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日