1

这个学期我正在上python课,我想以网页的形式在我的程序中添加图形用户界面。一部分我懒得学 Tkinter,一部分我只是在挑战自己,一部分我只是喜欢用 HTML/JS 编写接口。

我知道使用 SimpleHTTPServer 创建 HTTP 服务器的基础知识,但我需要一种方法让我的网页将 ajax 命令触发到服务器上的 python 脚本,然后在服务器端执行,然后接收脚本输出。有点像Sage做事的方式。

如何为 SimpleHTTPServer 创建一个扩展,然后我可以使用它来提供 python 脚本的输出?我需要一个非常通用的解决方案,以便给定我编写的任何 python 脚本,我可以轻松地将它包装在某种接口中,将它放在服务器的文件夹中,而无需做任何其他事情,只需使用 AJAX 调用它,我的服务器将处理其余部分。

我目前的想法是有一个ServerSideScript我的脚本可以扩展的类,它有一个名为output. 我拥有的每个脚本都应该包含一个名为 Script 的 ServerSideScript 子类。当要求服务器提供服务时,例如foo.py,它会注意到扩展并执行以下操作:

if self.path[-3:]: == ".py":
    return getScriptOutput(self.path)

...

def getScriptOutput(self, path):
    from path import Script # obviously not going to work, since path is a string
    return Script().output()

由于评论中指出的原因,这是行不通的,我知道import_module函数之类的东西,但是导入似乎是一种丑陋的开始方式。

有什么推荐的?

4

2 回答 2

3

Python 随附电池;CGIHTTPServer将使用 CGI 标准运行 Python 脚本:

CGIHTTPServer模块定义了一个请求处理程序类、兼容BaseHTTPServer.BaseHTTPRequestHandler并继承其行为的接口,SimpleHTTPServer.SimpleHTTPRequestHandler但也可以运行 CGI 脚本。

它会运行 Python 脚本,只要它们有.pyor.pyw扩展名,并且是可执行的;映射到文件的其他路径被视为常规文件,而是提供其内容。

您可能也对cgicgitb模块感兴趣,以帮助简化 CGI 脚本开发。

于 2013-10-18T22:04:26.743 回答
0

你可能想看看IPython notebooks - 它本质上为你提供了一个基于 web 的交互式 Python shell,它甚至与 matplotlib 等集成。你可以将 Python 脚本保存为 notebook,在语句之间添加文本等。

在此处输入图像描述

如果您想共享输出,但不是交互性,您也可以使用nbviewer 。

于 2013-10-18T20:06:50.863 回答