Если вы используете его без терминала, как, например, когда вы нажимаете «Выполнить» в Nautilus, вы можете просто проверить, подключен ли он к tty:
import sys
if sys.stdin.isatty():
# running interactively
print "running interactively"
else:
with open('output','w') as f:
f.write("running in the background!\n")
Но, как указывает ThomasKвы, кажется, имеете в виду запуск его в терминале, который закрывается сразу после завершения программы.Я думаю, что нет способа сделать то, что вы хотите без обходного пути;программа работает в обычной оболочке и подключена к терминалу.Решение о немедленном выходе принимается сразу после того, как оно заканчивается информацией, которой у него нет легкого доступа (параметры, переданные в исполняющую оболочку или терминал).
Вы можете изучить информацию о родительском процессе и обнаружение различий между двумя типами вызовов, но, вероятно, в большинстве случаев оно того не стоит.Рассматривали ли вы добавление параметра командной строки в ваш скрипт (подумайте --interactive
)?