Скажите, находится ли Python в интерактивном режиме

В сценарии Python, там какой-либо способ сказать, находится ли интерпретатор в интерактивном режиме? Это было бы полезно так, чтобы, например, когда Вы выполняете интерактивную сессию Python и импортируете модуль, немного отличающийся код был выполнен (например, вход выключен).

Я посмотрел на, говорят, является ли Python в-i режиме и попробовал код там, однако, что функция только возвращает true, если Python был вызван с флагом-i и не, когда команда, используемая для вызова интерактивного режима, python без аргументов.

То, что я имею в виду, является чем-то вроде этого:

if __name__=="__main__":
    #do stuff
elif __pythonIsInteractive__:
    #do other stuff
else:
    exit()

41
задан Community 23 May 2017 в 12:26
поделиться

3 ответа

__ main __.__ file __ не существуют в интерактивном интерпретаторе:

import __main__ as main
print hasattr(main, '__file__')

Это также касается кода, запускаемого через python -c , но не python -m .

56
ответ дан 27 November 2019 в 00:30
поделиться

From TFM : Если опция интерфейса не указана, подразумевается -i, sys.argv [0] - пустая строка (""), и текущий каталог будет добавлен в начало sys .дорожка.

Если пользователь вызвал интерпретатор с python и без аргументов, как вы упомянули, вы можете проверить это с помощью if sys.argv [0] == '' . Это также возвращает истину, если запускается с python -i , но, согласно документации, они функционально такие же.

6
ответ дан 27 November 2019 в 00:30
поделиться

sys.ps1 и sys.ps2 определены только в интерактивном режиме.

20
ответ дан 27 November 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: