3

我有一个奇怪的问题。我有一个 bash 脚本,它在其中调用一个 python 脚本。python脚本成功执行,但从未完全终止

Bash 脚本的内容:

#! /usr/bin/env bash
python python_script.py
echo "bar"

Python脚本的内容:

#Much stuff
sys.exit("The python script just ended")

我希望在终止时看到的是:

>The python script just ended
>bar

我得到的是:

>The python script just ended

如果我键盘中断,bash 将继续:

^C>bar

是什么赋予了?显然,出口正在正确调用,并且它与调用 python 脚本的 bash 脚本中的输出语句之间没有任何关系。

(我不一定能详细说明 python 脚本中“很多东西”的工作原理,因为我正在修改我不完全理解的现有代码。我大部分时间都单独留下了脚本的工作原理,并且修改后的输出比格式化更重要,但我很乐意尝试为您提供所需的任何其他信息)

4

2 回答 2

5

什么sys.exit()是抛出 type 的异常SystemExit。如果您的脚本要捕获此异常,它将继续执行过去sys.exit()的 .

此外,如果您有非守护线程,这些可能会阻止进程终止。

如果是这种情况,您可以将它们变成守护线程,或者以某种方式向它们发出您希望退出脚本的信号,并让它们自行关闭。

最后,有os._exit(),但你不应该诉诸于此。

于 2012-05-18T13:23:09.410 回答
0

以下也有效:

import os
print('Hellow world')
os._exit(os.EX_OK)

在 Ubuntu 中,它退出终端。另请参阅此链接中的示例Program With the os.exit() Method

于 2021-11-02T13:08:47.883 回答