martes, 8 de mayo de 2012

Python con C++

Usaremos una biblioteca incluida de forma nativa a partir de las versiones 2.5 de Python llamada ctypes. Está nos permite usar funciones de bibliotecas compartidas de C. De esta forma podemos conseguir que nuestro programa no pierda la eficiencia de C y sin renunciar la legibilidad y limpieza de Python.

Comenzamos con un ejemplo sencillo crearemos una biblioteca de C llamada "bPrimos.c".
int esPrimo(int n){
    int nc=0;
    for(i=1;i<=num;i++){
        if(n%i==0) nc++;
        if(nc>2) break;
    }
    if(nc==2) return "Es primo";
return "No es primo";}

Ahora compilamos la bilbioteca "bPrimos.c" para ello ejecutamos lo siguiente:
gcc -c -fPIC bPrimos.c
gcc -shared bPrimos.o -o bPrimos.so

Una vez creada la librería "bPrimos.so" podemos usarla en nuestro código de Python
import sys

#comprobamos que tenemos incluida la librería ctypes
try:
    from ctypes import *
except ImportError:
    print "Error, la biblioteca ctypes no está disponible"
    sys.exit(-1)

#Cargamos la biblioteca creada en C
p=cdll.LoadLibrary('pPrimos.so')

numero=int(raw_input("Introduce una cifra "))
print 'El numero introducido ', p.esPrimo(numero)

Sencillo verdad. Espero que os sea de gran utilidad. 

lunes, 7 de mayo de 2012

PHP ejecutar script Python pasando parametros

En el siguiente ejemplo crearemos un script en Python que cuente los caracteres de una cadena de texto que le hemos pasado por PHP. Este último se encargará de recoger lo que dice Python y mostrarlo por la pantalla.

Script Python contar.py
# -*- coding: iso-8859-15
import sys
import os
if len(sys.argv) >= 2:
 print "El texto '%s' tiene %s caracteres" % (sys.argv[1],len(sys.argv[1]))
else:
 print "Necesito un parámetro"

Código PHP ejecutar.php
<?php
$salida= array(); //recogerá los datos que nos muestre el script de Python

    $texto="Hola Mundo";
    exec("python contar.py '".$texto."'",$salida);
    echo $salida[0];
?>
Realmente fácil.

Python conocer el sistema operativo

Cómo saber en que sistema operativo se ejecuta el script.
import plataform
#Conocer si se esta ejecutando en un sistema Linux o Windows
if platform.system() == "Windows":
   print "Corro en Windows"
elif platform.system() == "Linux":
   print "Corro en Linux"

Python ejecutar comandos de sistema

Cómo ejecutar comandos del sistema en Python
import os
#Ejecutar comandos del sistema
os.system("COMANDO EJECUTAR")