Indica si Python está en modo interactivo
interactive python-2.5 (6)
En una secuencia de comandos de Python, ¿hay alguna manera de saber si el intérprete está en modo interactivo? Esto sería útil para que, por ejemplo, cuando ejecute una sesión interactiva de Python e importe un módulo, se ejecute un código ligeramente diferente (por ejemplo, el registro está desactivado).
Observé si Python está en modo -i y probé el código allí. Sin embargo, esa función solo devuelve true si Python se ha invocado con el indicador -i y no cuando el comando utilizado para invocar el modo interactivo es python
sin argumentos
Lo que quiero decir es algo como esto:
if __name__=="__main__":
#do stuff
elif __pythonIsInteractive__:
#do other stuff
else:
exit()
Aquí hay algo que funcionaría. Coloque el siguiente fragmento de código en un archivo y asigne la ruta a ese archivo a la variable de entorno PYTHONSTARTUP
.
__pythonIsInteractive__ = None
Y luego puedes usar
if __name__=="__main__":
#do stuff
elif ''__pythonIsInteractive__'' in globals():
#do other stuff
else:
exit()
http://docs.python.org/tutorial/interpreter.html#the-interactive-startup-file
Desde TFM : si no se proporciona una opción de interfaz, -i está implícito, sys.argv [0] es una cadena vacía ("") y el directorio actual se agregará al inicio de sys.path.
Si el usuario invocó al intérprete con python
y sin argumentos, como mencionó, puede probar esto con if sys.argv[0] == ''''
. Esto también devuelve true si se inicia con python -i
, pero según los documentos, son funcionalmente iguales.
Lo siguiente funciona con y sin el interruptor -i:
#!/usr/bin/python
import sys
# Set the interpreter bool
try:
if sys.ps1: interpreter = True
except AttributeError:
interpreter = False
if sys.flags.interactive: interpreter = True
# Use the interpreter bool
if interpreter: print ''We are in the Interpreter''
else: print ''We are running from the command line''
Utilice sys.flags
:
if sys.flags.interactive:
#interactive
else:
#not interactive
__main__.__file__
no existe en el intérprete interactivo:
import __main__ as main
print hasattr(main, ''__file__'')
Esto también se aplica al código ejecutado a través de python -c
, pero no a python -m
.