我可以使用os.system()
或subprocess.call()
在网络服务器上执行Python程序吗?
我的意思是我可以在.py脚本中编写这些函数并从Web浏览器运行它并期望程序被执行吗?
非常感谢。
编辑: 抱歉所有的困惑,我给你更多的问题背景。
我想做的原因是这个。 我有一个Python程序接受XML文件并返回TTF文件。 我在终端上运行该程序,如下所示:
ttx somefile.xml
之后它完成所有工作并生成一个ttf文件。 现在,当我将此脚本部署为Web服务器上的模块时。我使用a来允许用户浏览并选择XML文件。 然后我将文件数据读取到临时文件,然后将文件传递给模块脚本,执行如下:
ttx.main([temp_filename])
这是正确的方法吗?因为此时,我在日志或浏览器中没有出现任何错误。我得到了空白屏幕。
如果这不起作用,我将尝试os.system
或subprocess.call
答案 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。
答案 3 :(得分:0)
只要您的服务器配置为运行CGI脚本(例如,Apache的文档为here),是的,您可以从Web服务器执行python脚本。只需确保脚本位于相应的cgi-bin /目录中,并且该文件在服务器上具有可执行权限。
关于你的意见:
Option +ExecCGI
来完成的。再次,请参阅我链接的文档。这是你在寻找你的问题,或者你想用os.system()
实际调用 python脚本?
答案 4 :(得分:0)
我在IIS 5及更高版本的经典ASP中做了很多。我会让ASP引擎执行python代码(而不是,例如,vbscript(回到过去,在这里))。在那些asp页面后面将是用直接python编写的python模块,可以导入并且可以执行几乎任意的代码。正如其他人所提到的,有效用户需要对您尝试执行的事物拥有执行权限。