通过Flask中的.bat文件打开.exe文件

时间:2016-07-29 00:02:44

标签: python html windows batch-file flask

我正在尝试使用Flask打开一个带有html按钮的.exe文件(例如Paint),所以我编写了一个小的.bat文件,当我通过Python运行它时,它运行正常,但是当我运行时它似乎不起作用通过Flask打开它。

Python是:

@app.route('/assemblies', methods=['GET', 'POST'])
def assemblies():
    if request.method == 'POST':
        if request.form['submit'] == 'runFile':
            #os.startfile("/static/run.bat")
            text = "... running ..."
            filepath="/static/run.bat"
            p = subprocess.Popen(filepath, shell=True, stdout = subprocess.PIPE)
            stdout, stderr = p.communicate()
            return render_template('assemblies.html', text=text)
        else request.form['submit'] == 'process':
            [do other stuff]
    elif request.method == 'GET':
        return render_template('assemblies.html')

(部分)html文件是:

<div class="container">
    <form action="/assemblies" method="post"> ASSEMBLY <br> 
        <select name="Layer">
            <option value="1">1</option>        
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
        </select><br>
        <button type="submit" name="submit" value="process"> Process </button>
        <button  type="submit" name="submit" value="runFile"> Run </button> 
    </form>
</div>

蝙蝠是:

start /d "static\" myFile.exe

bat文件在Flask之外工作,但是我已经尝试使用exe和bat都在'static'文件夹和C:/上并且似乎完全没有响应(没有控制台反馈),所以我想我可能会丢失什么重要的?

1 个答案:

答案 0 :(得分:1)

更改后找到解决方案:

filepath="/static/run.bat"
p = subprocess.Popen(filepath, shell=True, stdout = subprocess.PIPE)
stdout,  = p.communicate()

有:

subprocess.call(["static/myFile.exe"])

现在它有效。我绕过了bat文件,但不确定原始脚本的问题是什么,所以任何见解仍然是受欢迎的。