在Web上执行Python程序

时间:2010-07-15 16:50:11

标签: python

我可以使用os.system()subprocess.call()在网络服务器上执行Python程序吗?

我的意思是我可以在.py脚本中编写这些函数并从Web浏览器运行它并期望程序被执行吗?

非常感谢。

编辑: 抱歉所有的困惑,我给你更多的问题背景。

我想做的原因是这个。 我有一个Python程序接受XML文件并返回TTF文件。 我在终端上运行该程序,如下所示:

ttx somefile.xml 

之后它完成所有工作并生成一个ttf文件。 现在,当我将此脚本部署为Web服务器上的模块时。我使用a来允许用户浏览并选择XML文件。 然后我将文件数据读取到临时文件,然后将文件传递给模块脚本,执行如下:

ttx.main([temp_filename]) 

这是正确的方法吗?因为此时,我在日志或浏览器中没有出现任何错误。我得到了空白屏幕。

如果这不起作用,我将尝试os.systemsubprocess.call

5 个答案:

答案 0 :(得分:1)

您不使用os.system或subprocess.call作为cgi进程执行某些操作。

也许你应该在这里阅读Python cgi教程:

http://www.cs.virginia.edu/~lab2q/

如果您希望cgi进程与本地计算机上的另一个进程通信,您可能需要查看Python的“REST框架”。

答案 1 :(得分:0)

是的,我一直这样做。像往常一样导入,将.py放在cgi-bin文件夹中,并确保服务器能够处理python。

答案 2 :(得分:0)

另一个选择是在Google的App Engine上创建一个应用程序。这为Python执行提供了大量资源和API。

http://code.google.com/appengine

答案 3 :(得分:0)

只要您的服务器配置为运行CGI脚本(例如,Apache的文档为here),是的,您可以从Web服务器执行python脚本。只需确保脚本位于相应的cgi-bin /目录中,并且该文件在服务器上具有可执行权限。

关于你的意见:

  1. 如果您确实需要,可以明确允许服务器上的其他文件夹运行可执行代码。我不知道你正在使用什么服务器,但是在Apache上这是通过为你想要的文件夹设置Option +ExecCGI来完成的。再次,请参阅我链接的文档。
  2. 您需要提供与服务器相关的绝对路径。例如,我开发的网站具有以下布局:/ public_html / cgi-bin /当我想访问.cgi或.py文件时,该网站的网址类似于http://chess.narnia.homeunix.com/cgi-bin/index.cgi。如果需要,您还可以设置重定向到某些文件。
  3. 通过浏览器传递参数的一种方法是将它们像HTTP POST方法一样附加到URL。这是一个很好的例子。
  4. 这是你在寻找你的问题,或者你想用os.system()实际调用 python脚本?

答案 4 :(得分:0)

我在IIS 5及更高版本的经典ASP中做了很多。我会让ASP引擎执行python代码(而不是,例如,vbscript(回到过去,在这里))。在那些asp页面后面将是用直接python编写的python模块,可以导入并且可以执行几乎任意的代码。正如其他人所提到的,有效用户需要对您尝试执行的事物拥有执行权限。