Python 如何捕获exit()的输出

Python 如何捕获exit()的输出,python,exit,exit-code,Python,Exit,Exit Code,我正在使用我的客户坚持不能更改的代码。需要使用类似subprocess.call()的python命令调用它。。。代码包括exit()函数的用法。退出时,exit()函数包含数据作为参数: exit(data) 如何在调用exit()时捕获脚本正在使用的数据参数,而不修改代码以使用返回或类似的东西?如果您的数据是有效的退出代码(即,我相信是0-127中的数字),那么您可以通过子流程API获取退出代码作为调用函数的返回值: >>> import subprocess >&

我正在使用我的客户坚持不能更改的代码。需要使用类似subprocess.call()的python命令调用它。。。代码包括exit()函数的用法。退出时,exit()函数包含数据作为参数:

exit(data)

如何在调用exit()时捕获脚本正在使用的数据参数,而不修改代码以使用返回或类似的东西?

如果您的数据是有效的退出代码(即,我相信是0-127中的数字),那么您可以通过
子流程
API获取退出代码作为调用函数的返回值:

>>> import subprocess
>>> subprocess.call(['python3', '-c', 'exit(24)'])
24
如果不是,那么它将被打印出来,因此最简单的方法可能是捕获流程的stderr并从中解析出来。

来自:

退出(code=None)
。。。调用时,使用指定的退出代码提升
SystemExit

从:

如果该值为整数,则指定系统退出状态(传递给C的
exit()
函数);如果为无,则退出状态为零;如果对象有其他类型(如字符串),则打印对象的值,退出状态为1


因此答案取决于
数据
是否为整数。如果为整数,则为子流程的退出代码;有关如何从
子流程
获取它,请参阅。如果
数据
不是整数,则将其打印到stderr;请参阅,了解如何从
子流程

获取
SystemExit
异常的值写入标准错误(我编辑了它);链接的问题描述了如何捕获标准输出,尽管它应该很容易适应标准错误。@chepner哦,当然。我假设它是stdout,因为文档没有指定stderr,但我应该检查一下。谢谢修理!这是Python代码?