2012-01-24 18 views
18

Por alguna razón, tengo que ejecutar un script php para obtener una imagen de Python. Debido a que el script php es muy grande y no es mío, me llevará días encontrar el algoritmo correcto utilizado y traducirlo a python.Ejecutar el código php en Python

Me pregunto si hay alguna forma de ejecutar el script php, con pocos parámetros, que devuelve una imagen, en python.

Respuesta

32

código Ejemplo:

import subprocess 

# if the script don't need output. 
subprocess.call("php /path/to/your/script.php") 

# if you want output 
proc = subprocess.Popen("php /path/to/your/script.php", shell=True, stdout=subprocess.PIPE) 
script_response = proc.stdout.read() 
+2

Este es el código pegado de http://mail.python.org/pipermail/tutor/2009-October/071973.html – Alvin

+7

es incorrecto. La primera llamada no funcionará en los sistemas POSIX. Use 'subprocess.call ([" php "," /path/to/your/script.php "])' en su lugar. Use 'script_response = subprocess.check_output ([" php "," /path/to/your/script.php "])' en lugar del segundo ejemplo. – jfs

+0

si el argumento 'shell' está establecido en' True' luego usar la cadena en lugar de una lista está bien – Valen

5

Simplemente puede ejecutar el ejecutable php desde Python.

Editar: ejemplo para Python 3.5 y superiores utilizando subprocess.run:

import subprocess 

result = subprocess.run(
    ['php', 'image.php'], # program and arguments 
    stdout=subprocess.PIPE, # capture stdout 
    check=True    # raise exception if program fails 
) 
print(result.stdout)   # result.stdout contains a byte-string 
+0

¿Podría publicar algún ejemplo? – jiahao

+0

http://mail.python.org/pipermail/tutor/2009-October/071973.html – Sjoerd

+0

Suponiendo que se puede llamar al script php desde la línea de comandos y acepta un argumento de línea de comando para describir qué hacer con la imagen que podría use el paquete de subproceso incorporado. importación subproceso subprocess.call (["/ ruta/a/php", "/ruta/a/php/script.php", "argumento"]) –

2

Hacer una envoltura alrededor de la secuencia de comandos PHP, que:

  • realiza la materia (Si entiendo bien, es una imagen creación),
  • redirige (301 Moved Permanently) a la imagen resultado,
  • (también , la imagen debería purgarse algún día).

para que pueda referirse a esta servicio (el script PHP) con una petición HTTP sencilla, desde cualquier lugar, puede probarlo con el navegador, utilice desde Python PRG, que necesita, sólo tiene que descargar la imagen de la forma habitual .

Además, si tiene un subsistema independiente de este tipo, no se sienta mal por implementarlo con un lenguaje/técnica diferente. Tiene varias ventajas, p. puedes instalar ese servicio en un host diferente.

Lectura recomendada: Service-Oriented Architecture en Wikipedia.

+0

¡Es una muy buena idea! Supongo que puede resolver mi problema. Muchas gracias. – jiahao

4

Usted puede utilizar php.py. Esto le permitiría ejecutar el código php en python, como en este ejemplo (tomado de here):

php = PHP("require '../code/private/common.php';") 
code = """for ($i = 1; $i <= 10; $i++) { echo "$i\n"; }""" 
print php.get_raw(code) 
+0

Hola. Gracias por tu ayuda. Si revisas el código fuente de este programa, puedes ver que tengo que ingresar el código php manualmente. Dado que también está vinculado a algunos archivos .inc, no es tan buena opción. Pero gracias de cualquier manera. – jiahao

Cuestiones relacionadas