0
我想用Flask打开一个html按钮打开一个.exe文件(例如Paint),所以我写了一个小的.bat文件,在我运行它时正确运行它Python,但是当我通过Flask打开它时似乎不起作用。通过Flask中的.bat文件打开.exe文件
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文件的工作瓶外,但我已经尝试过使用exe和bat在'static'文件夹和C:/中,并且似乎完全没有响应(没有控制台反馈),所以我认为我可能会错过重要的东西?
如果你想控制台输出尝试使用'subprocess.call''Popen'不会阻塞并且是异步的,你也可以看看'stderr'变量,看看是否有什么可能导致你的问题,我不明白为什么你需要'.bat'文件(你可以直接从python direclty调用你的exe文件) – danidee
Cheers @danidee,我正在尝试使用'Popen',但没有成功......我会看看'stderr'文档 – vabm