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