pythonno funciona si está ejecutando python 3, python3se usa en su lugar.
pzkpfw
41
Execfile ya no existe en python3, y exec () no parece estar funcionando de alguna manera ... no estoy seguro de lo que estoy haciendo mal. podrías actualizar la respuesta?
temporary_user_name
¿Hay alguna manera de proporcionar stdindesde un archivo como usar <el script de ejecución con en execfile().? @ s-lott
bhanu
9
@pzkpfw python puede apuntar a cualquier versión de python. He visto entornos con solo python v3 donde pythonapunta python3.
StockB
2
@pzkpfw Eso depende de qué pythonejecutable encuentre el sistema cuando revise las carpetas en la variable de entorno PATH.
¿Qué hace el método de lectura? Lamentablemente, el sitio de documentación oficial no proporciona un ejemplo claro y una explicación.
Dmitry
Lee el archivo y devuelve (de forma predeterminada) todo el contenido en una sola cadena; consulte, por ejemplo, la página w3schools en el archivo abierto .
Esto ejecutará un script y pondrá todas sus variables globales en el alcance global del intérprete (el comportamiento normal en la mayoría de los entornos de script).
¡Eres mi héroe! He estado luchando con algunas cosas realmente extrañas durante días donde os.getcwd () dijo una cosa, pero glob ("*") trabajó en otro directorio ... ¡Gracias! ¡Gracias!
pallevillesen
¿Hay alguna manera de pasar un parámetro al script? lo siguiente no funciona: exec (abre "setup.py install"). read (), globals ())
ben
1
@ben que no funcionará porque openlee directamente el código del script. Para pasar argumentos, mire esta respuesta , pero en lugar de execfile, obviamente use execy opencomo se muestra arriba.
Nico
47
Sorprendido no he visto esto todavía. Puede ejecutar un archivo y luego dejar el intérprete abierto después de que finalice la ejecución utilizando la -iopción:
Estoy tratando de usar variables y configuraciones de ese archivo, no invocar un proceso separado.
Bueno, simplemente importando el archivo con import filename(menos .py, debe estar en el mismo directorio o en su PYTHONPATH) ejecutará el archivo, haciendo que sus variables, funciones, clases, etc. estén disponibles en el filename.variableespacio de nombres.
Entonces, si tiene cheddar.pyla variable spam y la función eggs, puede importarlos con import cheddar, acceder a la variable con cheddar.spamy ejecutar la función llamandocheddar.eggs()
Si tiene un código cheddar.pyque está fuera de una función, se ejecutará de inmediato, pero crear aplicaciones que ejecuten cosas en la importación dificultará la reutilización de su código. Si es posible, ponga todo dentro de las funciones o clases.
Eso no usará el espacio de nombres global, como lo requiere la pregunta. Usar en su lugarfrom filename import *
Ricardo Cruz
La pregunta no menciona específicamente el uso de un espacio de nombres global, que puede ser lo que quiere el OP, pero no es obvio a partir de la pregunta.
ryanpcmcquen
13
Desde mi punto de vista, la mejor manera es:
import yourfile
y después de modificar yourfile.py
reload(yourfile)
o
import imp;
imp.reload(yourfile)in python3
pero esto hará que la función y las clases se vean así: yourfile.function1, yourfile.class1 .....
si su código es mycode.py por ejemplo, y escribe simplemente 'import mycode', Python lo ejecutará pero no hará que todas sus variables estén disponibles para el intérprete. Descubrí que debería escribir realmente 'from mycode import *' si desea que todas las variables estén disponibles para el intérprete.
Respuestas:
Varias formas.
De la cáscara
Desde adentro IDLE, presiona F5 .
Si está escribiendo interactivamente, intente esto: (¡ Python 2 solo !)
Para Python3 , use:
fuente
python
no funciona si está ejecutando python 3,python3
se usa en su lugar.stdin
desde un archivo como usar<
el script de ejecución con enexecfile()
.? @ s-lottpython
apuntapython3
.python
ejecutable encuentre el sistema cuando revise las carpetas en la variable de entornoPATH
.Para Python 2:
Para Python 3:
Ver la documentación . Si está utilizando Python 3.0, vea esta pregunta .
Consulte la respuesta de @ S.Lott para ver un ejemplo de cómo accede a los globales desde filename.py después de ejecutarlo.
fuente
Python 2 + Python 3
Esto ejecutará un script y pondrá todas sus variables globales en el alcance global del intérprete (el comportamiento normal en la mayoría de los entornos de script).
exec
Documentación de Python 3fuente
open
lee directamente el código del script. Para pasar argumentos, mire esta respuesta , pero en lugar deexecfile
, obviamente useexec
yopen
como se muestra arriba.Sorprendido no he visto esto todavía. Puede ejecutar un archivo y luego dejar el intérprete abierto después de que finalice la ejecución utilizando la
-i
opción:fuente
Bueno, simplemente importando el archivo con
import filename
(menos .py, debe estar en el mismo directorio o en suPYTHONPATH
) ejecutará el archivo, haciendo que sus variables, funciones, clases, etc. estén disponibles en elfilename.variable
espacio de nombres.Entonces, si tiene
cheddar.py
la variable spam y la función eggs, puede importarlos conimport cheddar
, acceder a la variable concheddar.spam
y ejecutar la función llamandocheddar.eggs()
Si tiene un código
cheddar.py
que está fuera de una función, se ejecutará de inmediato, pero crear aplicaciones que ejecuten cosas en la importación dificultará la reutilización de su código. Si es posible, ponga todo dentro de las funciones o clases.fuente
from filename import *
Desde mi punto de vista, la mejor manera es:
y después de modificar yourfile.py
o
pero esto hará que la función y las clases se vean así: yourfile.function1, yourfile.class1 .....
Si no puede aceptarlos, la solución final es:
fuente
No soy un experto, pero esto es lo que noté:
si su código es mycode.py por ejemplo, y escribe simplemente 'import mycode', Python lo ejecutará pero no hará que todas sus variables estén disponibles para el intérprete. Descubrí que debería escribir realmente 'from mycode import *' si desea que todas las variables estén disponibles para el intérprete.
fuente
Solo haz,
Asegúrese de no agregar la extensión .py. Si su archivo .py está en uso de subdirectorio,
fuente
Para python3, use con
xxxx = name
deyourfile
.fuente
Para Python 3:
Asegúrese de estar en el directorio correcto antes de ejecutar el comando.
Para ejecutar un archivo desde un directorio diferente, puede usar el siguiente comando:
fuente
Supongamos que desea las siguientes características:
__name__ == '__main__'
es True, por lo que los scripts se comportan correctamente como scripts.La
exec(open('foo.py').read())
función falla 1 Laimport foo
estrategia falla función 2Para obtener ambos, necesitas esto:
fuente