在Flask应用中运行Shell命令

9 投票
1 回答
18697 浏览
提问于 2025-04-18 08:10

我正在尝试从一个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"]
              ^

撰写回答