0

我有 2 个python 3脚本,它们形成一个调用树,如下所示:
operation.py --> wrapper.py --> shell script

取决于应用程序逻辑 operation.py 将按某种顺序调用各种包装脚本。

一切正常,直到我尝试从 shell 脚本捕获错误输出并将其传递回 operation.py

在 wrapper.py 我有这个:

outputs = subprocess.check_output( \
          [cmd], \
           universal_newlines=True, \
           shell=True \
           )
 print(outputs)
 exit(0)

注意缺少异常处理——这是故意的。Operation.py 将处理任何错误

在 operation.py 我有这个:

try :
    os.chdir(loc[1])
    outputs = subprocess.check_output( \
          ['python3.2','wrapper.py', various arguments...], \
          universal_newlines=True \
          )
    logging.info('Output from %s OperationScript.py', loc[1])
    logging.info(outputs)
    ......
except .... :
    error handling code here

现在根据文档,如果我想捕获输出,我stderr=subprocess.STDOUT在 operation.py 中的调用中添加:这确实捕获了错误输出,但它会导致wrapper.py 中的一些调用挂起并且什么也不返回。一些 shell 脚本工作正常,但其他的永远不会返回。一些调试显示被调用的 shell 脚本正常退出,并且 wrapper.py 正常退出,但 operation.py 无法识别。

如何捕获错误输出在脚本完成时始终返回到 operation.py?

4

0 回答 0