繁体   English   中英

用Javascript执行带参数的Python脚本的网页

[英]Webpage with Javascript executing Python script with arguments

我在同一目录中有三个文件。 一个是python脚本,需要argumenet。 一个是带有javascript的html页面。 最后一个是.wav源文件。

./myfolder/sound_manipulation.py
./myfolder/volume_slider.html
./myfolder/the_song.wav

sound_manipulation.py文件可以按以下方式执行:

python sound_manipulation.py -v 50

并基于the_song.wav生成一个新的wav文件new_song.wav,但仅占原始音量的50%。

另一方面,volume_slider.html包含一个从0到100%的滑块,以及一个调用onclick javascript函数update_vol()的按钮;

到目前为止,update_vol()会警告滑块的值,仅此而已。

function update_vol() {
    var vol = document.getElementById('vol_slider').value;
    alert(vol);
}

但我希望update_vol()使用vol实际执行python脚本。

我该如何实现?

另外,当执行“ python sound_manipulation.py -v 50”时,如何将new_song.wav的位置返回给volume_slider.html?

请帮忙。 谢谢!

最简单,最粗糙的一次性cgi脚本可能会解决您的问题。

设置一个cgi脚本/环境以仅从用户/获取volume值,然后使用subprocess模块来处理.wav文件并将其发送回用户。 如果您还需要更多,请构建自己的Web应用程序。

import cgi
import subprocess
import sys
form = cgi.FieldStorage()
volume = form.getfirst('volume') #read from form 'volume'

subprocess.call(['python', 'sound_manipulation.py', '-v', volume])

with open('new_song.wav', 'rb') as wav_file:
    print("Content-Type: audio/wav\n")
    sys.stdout.write(wav_file.read())

嗯,嗯,我想你很不走运。 浏览器脚本无法在您的系统上执行任何操作(因此没有Python脚本)。 您可以想象,这可能会带来巨大的安全风险-这恰恰是Microsoft ActiveX遇到的麻烦。

我假设您想为该脚本创建图形界面,所以您可以:

  • 如果您绝对需要HTML,请使用与Python脚本等效的JavaScript
  • 或在QT,GTK等中创建接口。 顺便说一下,Python可以轻松做到这一点!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM