python - 运行只能读取/写入主应用程序变量子集的外部 Python 脚本

标签 python namespaces interpreter

我有一个 Python 应用程序,可以模拟系统的行为,比如说汽车。

该应用程序定义了一组相当大的变量,其中一些对应于现实世界的参数(剩余燃料量、汽车速度等),而另一些则与用户不感兴趣的模拟器内部机制相关。

一切正常,但目前用户在执行过程中无法与模拟进行任何交互:她只是设置模拟参数,启动模拟,然后等待其终止。

我希望用户(即不是应用程序的创建者)能够在应用程序之外编写 Python 脚本,该脚本可以读/写与现实世界参数相关的变量(并且只有这些变量)。

例如,在 t=23s(这个条件我知道如何检查)时,我想执行用户脚本 gasLeak.py ,读取剩余燃料值并将其设置为当前值的一半。

总而言之,如何从 Python 主应用程序执行用户编写的 Python 脚本,这些脚本只能访问和修改主脚本变量的预定义子集。 在一个完美的世界中,我还希望在应用程序运行期间应用到用户脚本的修改被考虑在内,而不必重新启动所述应用程序(沿着 reload 模块的某事)。

最佳答案

使用户编写的脚本读取命令行参数并打印到 stdout .然后你可以用 subprocess 给他们打电话模块将他们需要知道的变量作为参数并使用 subprocess.check_output 读取他们的响应.

关于python - 运行只能读取/写入主应用程序变量子集的外部 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53229900/

相关文章:

python - 如何在 Go 应用程序中创建多个 Python 实例

c# - 解释自定义语言

python - 如何找到 Python 3.8.7 解释器?

python - 使用 Python 将字典分类的最佳方法

python - Scikit Learn - 如何绘制概率

python - VS Code 未发现 Python 单元测试测试

javascript - 用函数包装 jQuery 插件

python - 从一个 python 文件调用多个绘图函数时出现问题

jquery - jQuery on() 处理程序的不同表示法,包括命名空间

C++ 使用命名空间来避免长路径