在Flask应用中运行Shell命令
我正在尝试从一个Flask应用程序中运行一个命令行指令,并想获取它的输出。现在我用的这个应用程序是这样的:
from flask import Flask
import subprocess
app = Flask(__name__)
@app.route("/")
def hello():
cmd = ["ls"," -l"]
p = subprocess.Popen(cmd, stdout = subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
out,err = p.communicate()
return out
if __name__ == "__main__" :
app.run()
这个命令行指令本身是没问题的,我在外面测试过,但从浏览器访问时却出现了“内部服务器错误”。
更新:正如第一个回答所指出的,我之前有个拼写错误……不过现在运行正常了,但我在浏览器中还是没有看到任何输出……
1 个回答
14
这只是一个简单的打字错误。在下面这一行中,cd
应该改成 cmd
:
p = subprocess.Popen(cd, # <----
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
更新
还有另一个打字错误;在第二个项目中去掉一个空格:
cmd = ["ls", " -l"]
^