【问题标题】:Webpage with Javascript executing Python script with arguments带有 Javascript 的网页执行带有参数的 Python 脚本
【发布时间】:2013-04-08 02:42:30
【问题描述】:

我在同一个目录中有三个文件。一个是 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?

请帮忙。谢谢!

【问题讨论】:

    标签: javascript python html arguments


    【解决方案1】:

    嗯,好吧,我猜你运气不好。浏览器脚本不能在你的系统上执行任何东西(所以没有 Python 脚本)。我相信你可以想象,这可能会带来巨大的安全风险——这正是微软的 ActiveX 遇到的麻烦。

    我假设您想为该脚本创建一个图形界面,因此您也可以:

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

    【讨论】:

      【解决方案2】:

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

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

      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())
      

      【讨论】:

      • 谢谢。我会看看我是否可以让服务器准备好处理这个问题。 :)
      猜你喜欢
      • 1970-01-01
      • 2019-05-06
      • 2018-04-13
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      • 2012-05-26
      相关资源
      最近更新 更多