从烧瓶应用程序执行bash命令

时间:2018-08-24 10:29:35

标签: python bash nginx flask uwsgi

应用程序详细信息:Ubuntu 16.04 + flask + nginx + uwsgi

我正在尝试从flask应用程序执行bash命令。

@app.route('/hello', methods=('GET', 'POST'))
def hello():
    os.system('mkdir my_directory')
    return "Hello"

以上代码成功运行,但未创建任何目录。还会在我的本地计算机上创建没有任何nginx级别设置的目录。

我还尝试了以下方法:

  1. subprocess.call([['mkdir','my_directory'])#引发内部服务器错误
  2. subprocess.call([['mkdir','my_directory'],shell = True)#没有错误,但未创建目录
  3. subprocess.Popen(['mkdir','my_directory'])#引发内部服务器错误
  4. subprocess.Popen(['mkdir','my_directory'],shell = True)#没有错误,但未创建目录

我需要任何nginx级别的配置更改吗?

1 个答案:

答案 0 :(得分:0)

最后我明白了。我关注了Python subprocess call returns “command not found”, Terminal executes correctly

我所缺少的是mkdir的绝对路径。当我执行subprocess.call(["/bin/mkdir", "my_directory"])时,它将成功建立目录。

上面的链接包含完整的详细信息。

如果有人能描述为什么我需要为mkdir指定绝对路径的原因,我也将不胜感激。

谢谢大家。 :)