在web上执行Python程序

在web上执行Python程序,python,Python,我可以使用os.system()或subprocess.call()在Web服务器上执行Python程序吗 我的意思是,我可以在.py脚本中编写这些函数,然后从web浏览器中运行它,并期望程序能够执行吗 非常感谢 编辑: 对于所有的困惑,我很抱歉,我会给你更多关于我的问题的背景资料 我尝试这样做的原因是。 我有一个Python程序,它接受XML文件并返回TTF文件。 我在终端中运行该程序,如下所示: ttx somefile.xml ttx.main([temp_filename]) 之

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

我的意思是,我可以在.py脚本中编写这些函数,然后从web浏览器中运行它,并期望程序能够执行吗

非常感谢

编辑: 对于所有的困惑,我很抱歉,我会给你更多关于我的问题的背景资料

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

ttx somefile.xml 
ttx.main([temp_filename]) 
之后,它完成所有工作并生成一个ttf文件。 现在,当我将此脚本作为模块部署到web服务器上时。我使用允许用户浏览和选择XML文件的。 然后我将文件数据读取到临时文件,然后将该文件传递给要执行的模块脚本,如下所示:

ttx somefile.xml 
ttx.main([temp_filename]) 
这样做对吗?因为在这一点上,我在日志或浏览器中没有得到任何错误。我的屏幕是空白的


当这不起作用时,我打算尝试
os.system
subprocess.call

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

另一种选择是只需在Google的应用程序引擎上创建一个应用程序即可。这为Python执行提供了大量的资源和API


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

关于你的评论:

  • 如果确实需要,可以显式允许服务器上的其他文件夹运行可执行代码。我不知道您使用的是哪台服务器,但在Apache上,这是通过为所需文件夹设置
    Option+ExecCGI
    来实现的。再次查看我链接到的文档
  • 您需要给出相对于服务器的绝对路径。例如,我开发的一个站点具有布局:/public\u html/cgi-bin/当我想要访问.cgi或.py文件时,该站点的url类似于。如果需要,还可以设置重定向到某些文件
  • 通过浏览器传递参数的一种方法是将参数像HTTP POST方法一样附加到URL。这是一个很好的例子

  • 这就是您的问题所要寻找的,还是您想用
    os.system()
    调用python脚本?

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

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


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

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

    我没有cgi bin下的脚本。它还能用吗?第二,我必须给出python程序的绝对路径吗?最后,我如何向它传递参数?谢谢,但没有使用os.system或subprocess.call作为调用cgi的方法,对吗?@ssdesign我也注意到了问题中的一些模糊之处。我已经修改了我的答案,试图帮助您回答额外的问题,但您可能希望返回并尝试澄清您的原始问题。@ssdeisgn,如果脚本不在cgi bin下,它不应该执行脚本,它将为用户提供正常访问权限(即显示代码)。如果要执行第二个python程序2,可以从os.system执行,但要执行program1,它必须自己执行,这通常只发生在program1位于cgi-bin中时。您的问题需要改进:第二句话是更好的扩展位置。第一句话看起来你误解了这些功能的含义。您应该研究如何使用Python编写“CGI”脚本和“web服务”。您好,我正在尝试这样做,但我的网页显示为空白,错误日志也没有显示任何错误。但是我的脚本没有被执行:(……知道可能出了什么问题吗?我的意思是我在尝试纯Python,而不是使用ASP。你在使用什么平台(os、web服务器)?我在Mac os上使用Apache(Snowleappord)使用Python 25和mod_Python 3.3.1 hanks。我正在尝试这样做。我有一个Python程序,它接受XML文件并返回TTF文件。我在终端中运行该程序,如下所示:ttx somefile.XML……然后它完成所有工作并生成一个TTF文件。现在,当我将此脚本作为模块部署到web服务器上时。我使用r浏览并选择XML文件。然后我将文件数据读取到临时文件,然后将文件传递给要执行的模块脚本,如下所示:ttx.main([temp_filename])这是正确的方法吗?当这不起作用时,我打算尝试os.system或SUBSPROCESS.CALL。因此表单在提交时执行不同的python脚本?如果是这样,那么是的,您可以将另一个python脚本导入到处理表单的脚本中。很难知道是否调用ttx.main()在看不到代码的情况下肯定可以工作,但您肯定可以将一个.py文件导入另一个文件(或导入用python编写的.cgi)。是的,导入工作正常,因为如果我向主函数发送了错误数量的参数,脚本将抛出错误。问题是,我如何跟踪主函数中的某些内容。我在执行req.write()时所做的所有努力都失败了……。我可能看起来像在做愚蠢的事情,但我没有