当我们从python程序触发shell脚本时,shell脚本的日志信息未显示

时间:2018-10-20 18:59:41

标签: python shell process subprocess

我正在从pyhton程序中调用shell脚本,并且shell脚本将INFO和DEBUG日志作为输出的一部分。 当我从python程序运行shell脚本时,我只能看到标准输出,而看不到shell脚本输出的INFO和DEBUG日志。

我的代码:

   process = subprocess.Popen(['bash','/myshell_script.sh',env, params],stdout=subprocess.PIPE, stderr=subprocess.PIPE)

   while (True):
     retcode = process.poll()  # returns None while subprocess is running
     line = process.stdout.readline()
     **print(line)**
     if (retcode is not None):
        break

在这里,当我打印shell脚本输出时,我只能看到部分输出,而看不到“ 18/10/20 11:24:55 INFO test test”(这是shell脚本输出)之类的输出

有人可以帮助我提供一些信息,我如何获取所有shell脚本输出。

1 个答案:

答案 0 :(得分:0)

您的脚本似乎正在向INFO发送DEBUGstderr日志。您可以尝试删除stderr=subprocess.PIPE,以查看输出是否出现在终端中。

如果您确实需要subprocess.PIPE用于stderr,例如要从Python捕获stderr输出,则需要调用process.communicate()查看更多信息{{ 3}}