Python:将子进程Popen stdout重定向到logfi

2024-04-29 00:02:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python进程在运行,有一个logger对象配置为在日志文件中打印日志。在

现在,我试图通过这个python进程调用scala脚本,方法是使用Python的subprocess模块。在

subprocess.Popen(scala_run_command, stdout=subprocess.PIPE, shell=True)

问题是,无论何时python进程退出,它都会挂起shell,只有在显式地运行stty sane命令之后,shell才会生效。我的猜测是,这是因为scala脚本输出到shell,因此shell挂起,因为它的stdout[其stdout中的某些内容导致shell失去理智]。在

出于同样的原因,我想尝试将scala run脚本的输出放在默认日志文件中,这似乎不是通过多种方式实现的。在

因此,查询可以归结为,如何在日志文件中的stdout模块中运行shell命令的stdout输出。即使有更好的方法来实现这一点,而不是{},我也很想知道其中的想法。在

代码的当前状态如下所示。在

^{pr2}$

Tags: 模块文件对象方法run命令脚本进程
1条回答
网友
1楼 · 发布于 2024-04-29 00:02:12

使用

p = subprocess.Popen(...)

其次是

^{pr2}$

然后stdout和{}将包含来自子进程输出流的输出字节。然后可以记录stdout值。在

相关问题 更多 >