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

使用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日

悬赏问题

  • ¥15 Workbench中材料库无法更新,如何解决?
  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行
  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败