0

我正在创建一个与此类似的 python 程序 。无论如何,我想做的是让用户能够修改自己的程序,但我需要帮助理解它是如何工作的。我查看了源代码并且很困惑发生这种情况,即使有人可以指出我会非常有帮助。我知道这些程序不会被沙盒化,但这并不是我现在担心的事情。如果您能指出我的任何方向,那就太好了!谢谢!

4

2 回答 2

0

“机器人程序”只是存储为纯文本文件。

在editor.py中有一个通用的文本编辑器。当您在给定视图中打开机器人时,例如qt4view.py中的 Qt4 视图,它只是实例化一个文本编辑器并将机器人的文件交给它。同样,机器人的文件是 Python 脚本这一事实并不重要。它只是将其编辑为文本文件。

与此同时,战斗代码打开的机器人文件与文本编辑器作为文本文件打开的 Python 代码相同。你可以在game.py中看到这段代码:它只是使用subprocess模块来运行 Python,将机器人文件作为参数传递。

于 2013-09-11T22:03:51.133 回答
0

我的另一个答案涉及您实际提出的问题。但我不认为这是你真正想知道的。

你只是想知道如何在一个单独的 Python 解释器中运行一些你有路径名的 Python 脚本,对吧?

虽然可以从 pybotwar 代码中弄清楚这一点,但还有很多额外的东西会妨碍理解它——conf.py文件、可配置的额外标志等。

但答案很简单:使用subprocess模块,就像运行任何程序一样。在这种情况下,Python 解释器是可执行文件(通常是你想要sys.executable的,你正在使用的同一个 Python 解释器),以及你想要作为参数运行的脚本。例如:

script_output = subprocess.check_output([sys.executable, script_path])

subprocess文档很好地解释了所有不同的选项。

于 2013-09-11T23:11:05.737 回答