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