2013-02-15 159 views
6

我近一年来一直在同样的问题上磕磕绊绊。我总是找到一种解决方法,但我厌倦了找到解决办法。从网上运行一个Python脚本

我需要的是在网页上创建一个按钮(最好是HTML,而不是PHP或ASP),它在服务器上运行python脚本。我还希望能够让这个按钮从表单发送信息到脚本。

我需要在本地主机上以及通过托管在Amazon Cloud上的Web服务执行此操作。我将无法在Amazon Cloud服务上安装任何额外的东西,例如PHP或CGI。

我真的很喜欢一个简单的解决方案,我是一个Python的专家,我可以编写口哨的网页,但我无法找到这个问题的简单解决方案。

我的理想的解决办法是这样的邮件标记:

<a href="mailto:[email protected]?Subject=Hello%20again">Send Mail</a> 

除外:

<a href="myscript.py?Subject=1234">Run Script</a> 

现在我很怀疑这样的一个解决方案,但还有我可以梦想的权利。

我试图运行脚本:

  1. 从用户
  2. 返回一个唯一的ID发送ID来创建基于ID地图的地理信息系统(该ID选择的区域地图)
  3. 然后将地图导出到PNG,写入HTML文档,然后在新选项卡中显示给用户。

编辑---------------------------

感谢@Ketouem答案我能找到一个伟大的解决我的问题。我会在这里发布一些代码,以便其他人可以受益。确保你下载了用于python的Bottle Module,它非常棒。

# 01 - Import System Modules 
from bottle import get, post, request, Bottle, run, template 

# 02 - Script Variables 
app = Bottle() 

# 03 - Build Temporary Webpage 
@app.route('/SLR') 
def login_form(): 
    return '''<form method="POST" action="/SLR"> 
       Parcel Fabric ID: <input name="UID" type="text" /><br /> 
       Save Location: <input name="SaveLocation" type="text" value="D:/Python27/BottleTest/SLR_TestOutputs"/><br /> 
       Air Photo On: <input name="AirPhoto" type="checkbox"/><br />     
       Open on Completion: <input name="Open" type="checkbox"/><br /> 
       Scale: <input name="Scale" type="text" value="10000"/><br /> 
       <input type="submit" /> 
       </form>''' 

# 04 - Return to GIS App 
@app.route('/SLR', method='POST') 
def PHPH_SLR_Script(): 
    # I won't bother adding the GIS Section of the code, but at this point it send the variables to a program that makes a map. This map then saves as an XML and opens up in a new tab. 

# 04 - Create and Run Page 
run(app, host='localhost', port=8080) 
+1

? – 2013-02-15 16:25:18

+0

我有问题的另一个问题,如果任何人都可以帮助它位于[这里](http://stackoverflow.com/questions/15010556/python-bottle-issues-when-accessed-externally) – 2013-02-21 19:35:45

回答

5

你可以使用瓶:您可以运行使用web.py,瓶或角守护http://bottlepy.org/docs/dev/index.html这是一种轻型Web框架

+0

嗯,这个是一个非常有趣的解决方案,我将不得不尝试它,然后才真正知道它是否适合我的情况。 – 2013-02-15 17:03:40

+0

神奇的解决方案,我会将我的代码添加到我的答案中,但您真的帮助了这个模块建议。 – 2013-02-19 15:10:34

+1

很高兴帮助^^ – Ketouem 2013-02-19 16:53:28