2010-01-07 13 views

Respuesta

11

En Python 2, la función integrada execfile hace esto.

execfile(filename) 
+2

tienes que amar a python. ¿Cómo * exec * ute a * file * en python: execfile. –

+0

en Python 3 que doesn t trabajo que tiene que utilizar su propio módulo para que al igual que este import sys proceso de la clase(): \t def __call __ (self, nombre de archivo, globales = Ninguno, los locales = None): \t \t importación sys \t \t si globales es Ninguno: \t \t \t globales = sys._getframe (1) .f_globals \t \t si los locales es Ninguno: \t \t \t locales = sys._getframe (1) .f_locals \t \t con abierto (nombre de archivo, "r") como fh: \t \t \t exec (fh.read() + "\ n", globals, locales) sys.modules [__ name__] = process() – jamk

+2

Yep, 'execfile()' se ha ido en Python 3. Ver [¿Qué es una alternativa a execfile en Python 3.0?] (http://stackoverflow.com/questions/436198/what-is-an-alternative-to-execfile-in -python-3-0) –

3

Si está ejecutando ipython (que recomiendo altamente para las sesiones interactivas pitón), puede escribir:

%run filename 

o

%run filename.py 

para ejecutar el módulo (en lugar de importándolo). Obtendrás la finalización del nombre de archivo, lo cual es genial para ReallyLongModuleName.py (no es que digas tus módulos de esa manera ni nada por el estilo).

+0

gracias por la sugerencia, suelo usar ipython, pero desafortunadamente para esta tarea necesité depurar una biblioteca de C llamada desde python a través de Ctypes. Así que necesitaba cargar el binario de python en gdb, ejecutarlo, importar ctypes, cargar la biblioteca, anotar la dirección de carga, partir a gdb, agregar los símbolos de la biblioteca, establecer los puntos de interrupción, continuar la ejecución de python y finalmente cargar el módulo. .utilizar ipython hubiera agregado un paso adicional, ya que no es un binario en sí mismo que se puede cargar directamente en gdb, sino en otro script de python :-) – fortran

Cuestiones relacionadas