В сценарии Python, там какой-либо способ сказать, находится ли интерпретатор в интерактивном режиме? Это было бы полезно так, чтобы, например, когда Вы выполняете интерактивную сессию Python и импортируете модуль, немного отличающийся код был выполнен (например, вход выключен).
Я посмотрел на, говорят, является ли Python в-i режиме и попробовал код там, однако, что функция только возвращает true, если Python был вызван с флагом-i и не, когда команда, используемая для вызова интерактивного режима, python
без аргументов.
То, что я имею в виду, является чем-то вроде этого:
if __name__=="__main__":
#do stuff
elif __pythonIsInteractive__:
#do other stuff
else:
exit()
__ main __.__ file __
не существуют в интерактивном интерпретаторе:
import __main__ as main
print hasattr(main, '__file__')
Это также касается кода, запускаемого через python -c
, но не python -m
.
From TFM : Если опция интерфейса не указана, подразумевается -i, sys.argv [0] - пустая строка (""), и текущий каталог будет добавлен в начало sys .дорожка.
Если пользователь вызвал интерпретатор с python
и без аргументов, как вы упомянули, вы можете проверить это с помощью if sys.argv [0] == ''
. Это также возвращает истину, если запускается с python -i
, но, согласно документации, они функционально такие же.