相关疑难解决方法(0)

如何从 Flask 应用程序执行 Shell 脚本

我已经创建并部署了一个带有 Apache2 服务器 WSGI 的 Flask 应用程序,现在想要从应用程序运行 .sh 脚本。但是,从 python 代码调用,它不会执行。

这是 test.sh:

#!/bin/bash
echo "hi from shell script"
Run Code Online (Sandbox Code Playgroud)

这是我的 python flask 应用程序代码 index.py(在打开应用程序时运行)但没有打印或执行任何内容:

import subprocess
subprocess.call('/var/www/FlaskApp/FlaskApp/scripts/test.sh')
Run Code Online (Sandbox Code Playgroud)

为了检查我的代码中没有错误,我检查了烧瓶错误日志,没有错误。此外,我创建了一个名为 test_shell_script.py 的脚本,使用与上面相同的 python 代码(但不是flask应用程序代码),它运行得很好,如下所示:

# test_shell_script.py
import subprocess
subprocess.call('/var/www/FlaskApp/FlaskApp/scripts/test.sh')
Run Code Online (Sandbox Code Playgroud)

然后用 python 运行它: python3 /var/www/FlaskApp/FlaskApp/test_shell_script.py

hi from shell script
Run Code Online (Sandbox Code Playgroud)

我也确实更改了权限:

-rwxr-xr-x 1 root root 364 Nov 19 17:48 ../scripts/test.sh
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么不允许我的 Flask 应用程序从 python 代码运行 shell 命令?

python bash shell flask

5
推荐指数
1
解决办法
2万
查看次数

Python:如何获得多个系统命令的最终输出?

SO上有很多帖子,比如这个:subprocess.Popen的输出存储在一个字符串中

复杂命令存在问题.例如,如果我需要从中获取输出

ps -ef | grep something | wc -l

子进程不会完成这项工作,因为子进程的参数是[程序名称,参数],因此不可能使用更复杂的命令(更多程序,管道等).

有没有办法捕获多个命令链的输出?

python subprocess

4
推荐指数
2
解决办法
2022
查看次数

从 Python 脚本子进程获取输出

这可能是一个愚蠢的问题,但我有一个启动子进程的 Python 脚本(也是一个 Python 脚本),并且我需要该子进程返回三个整数。如何从启动子进程的 Python 脚本获取这些返回值?我是否必须将整数输出到标准输出,然后使用 check_output() 函数?

python subprocess return-value

3
推荐指数
1
解决办法
4185
查看次数

如何将stdout转换为字符串(Python)

我需要将通过子进程执行的进程的stdout捕获到一个字符串中,然后将其放入我正在创建的wx应用程序的TextCtrl中.我怎么做?

编辑:我也想知道如何确定进程何时终止

python stdout

2
推荐指数
1
解决办法
2万
查看次数

在 python 中终止使用 exec(open(file).read()) 运行的程序

在我的代码中,我从 tkinter gui 调用管道。当用户按下“运行”按钮时,整个管道开始运行。如果选择了某些设置,则会调用主 GUI 的顶层,要求提供附加文件。除非按下取消按钮或关闭窗口 X,否则这一切都有效。顶层关闭但程序继续运行。最终它会因为文件不存在而崩溃。调用 sys.exit() 不是解决方案,因为这样整个 gui 都会关闭,我只希望特定的顶层关闭并停止正在运行的文件。

如何杀死使用 exec(open(file).read()) 运行的文件而不杀死整个程序?

python tkinter exec sys

1
推荐指数
1
解决办法
1471
查看次数

标签 统计

python ×5

subprocess ×2

bash ×1

exec ×1

flask ×1

return-value ×1

shell ×1

stdout ×1

sys ×1

tkinter ×1