我正在尝试从本地javascript文件(本地运行的HTML / javascript程序的一部分)运行python脚本。
我一直在谷歌搜索这几个小时,并找到了很多解决方案,其中没有一个真正适合我。
这是javascript:
$.ajax({
type: "POST",
url: "test.py",
data: { param: " "}
}).done(function( o ) {
alert("OK");
});
test.py文件与脚本/ html文件位于同一文件夹中。
这是脚本:
#!/usr/bin/python
import os
filepath = os.getcwd()
def MakeFile(file_name):
temp_path = filepath + file_name
with open(file_name, 'w') as f:
f.write('''\
def print_success():
print "sucesss"
''')
print 'Execution completed.'
MakeFile("bla.txt");
正常运行时工作正常。
在我的Firefox控制台上,我收到“格式不正确”的错误,并且脚本不会创建文件。但是,我可以看到Firefox确实提取了脚本,因为我可以通过单击文件名在浏览器中查看它。
答案 0 :(得分:5)
为了执行python脚本,必须由通过CGI或WSGI等支持它的Web服务器进行部署。
点击此处的文档:webservers
答案 1 :(得分:1)
您的代码存在三个问题。
首先,当您调用$.ajax()
时,它会尝试将响应解析为JSON或HTML。要防止它,请使用dataType: "text"
。
$.ajax({
type: "POST",
url: "111212.py",
data: { param: " "},
dataType: "text"
}).done(function( o ) {
alert("OK");
});
其次,从javascript获取本地文件可能违反同源策略,具体取决于浏览器。请参阅:Origin null is not allowed by Access-Control-Allow-Origin
最重要的是,提取不会执行文件,它只是读取它并以字符串形式返回。
答案 2 :(得分:1)
显然,正如已经指出的那样,这不可能做到,不是这样的。因此,我将启动一个简单的CGI python服务器来为HTML文件提供服务,并执行该脚本。我已经测试过了,效果很好!