3ENGINE

Programación y otros cachivaches

Archivo

Página 19/104

Tecnologia

Syntaxerror non-ascii character Python


Si al ejecutar un script Python se produce un Syntaxerror non-ascii character Python, significa que contiene caracteres NO ASCII.

Para solucionar este problema:

1. Debes convertir el fichero a codificación utf-8, normalmente el editor de texto permite esto.

2. Y añadir en la cabecera del fichero:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

Ejemplo:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

lang_codes = {
    u'el': (u'Greek', u'Ελληνικά', u'Greece', u'Grèce', u'Ellas', u'Ellada'),
    u'en': (u'English', u'English'),
    u'eo': (u'Esperanto', u'Esperanto'),
    u'es': (u'Spanish', u' Castilian', u'español', u'castellano', u'Spain', u'España')
}

Referencias:
Compile Syntax Error: non ASCII letters in a string




Tecnologia

Python: Cómo instalar pyquery y probarlo


pyquery permite realizar consultas de manera similar a como lo hace jQuery en documentos XML y HTML. Como requisito previo, es necesario tener instalado pip. Ver Python: cómo instalar pip

instalar pyquery

Pasos para instalar pyquery:

1. Sino quieres complicarte la vida y tu versión de Ubuntu lo permite, prueba con esto:

$ sudo aptitude install python-pyquery

2. Sino es así, para instalar pyquery compilando, primero tendrás que instalar python-dev headers y luego pyqyery:

$ sudo aptitude install python-dev libxml2 libxml2-dev libxslt-dev
$ sudo STATIC_DEPS=true pip install pyquery

(posteriormente eliminar la carpeta build)

3. Si falla la instalación con la segunda opción recuerda desinstalar los paquetes antes de probar suerte con otro sistema:

$ sudo pip uninstall pyquery
$ sudo pip uninstall lxml
$ sudo pip uninstall cssselect

Ejemplo:

Ahora un pequeño ejemplo con pyquery para obtener el cambio euro-dolar de una página Web:

from pyquery import PyQuery as pq

jquery = pq(url="http://www.cambio-euro.es/")
print jquery("div[id='valor']").text()

Y un posible resultado:

1 Euro =  1,37 Dolares

Update 25/11/2014 : Si te da algun problemilla, por ejemplo un error del tipo «AttributeError: ‘XPathExpr’ object has no attribute ‘add_post_condition'» prueba a ejecutar esto:

pip install --user git+git://github.com/gawel/pyquery.git

Referencias:
pyquery: a jquery-like library for python
pyquery: a jquery-like library for python
Installing lxml module in python




Tecnologia

Python: cómo instalar pip


pip es un sistema de gestión de paquetes usado para instalar y gestionar paquetes de software escritos en Python. Muchos de estos paquetes se pueden encontrar en PyPI (Python Package Index)

instalar pip

Pasos para instalar pip:

1. Sino tienes instalado python (muchas distribuciones ya lo llevan):

sudo aptitude install python

2. Instalar Cython. Algunos paquetes para instalarse, hacen uso de el. Se trata de un lenguaje de programación que simplifica la escritura de módulos de extensión para Python en C y C++:

sudo aptitude install cython

3. Instalar setup tools. Se trata de una utilidad que permite descargar, compilar, instalar, actualizar y desinstalar paquetes de Python:

sudo aptitude install python-setuptools

4. Instalar pip (the Python Package Index). Que permite bajar los paquetes del repositorio:

sudo aptitude install python-pip

Funciones básicas

Para instalar un paquete con pip:

pip install nombre_paquete

Para instalar un paquete de un repositorio como github (requiere tener instalado git):

pip install https://github.com/facebook/python-sdk/zipball/master

Para comprobar los paquetes instalados en el sistema:

pip freeze

Para instalar dependencias de un proyecto, se puede hacer uso de un fichero externo:

pip install -r ./requirements.txt

Donde por ejemplo el archivo requirements.txt puede ser el siguiente:

python-ldap
django
buildbot
buildbot-slave
PyYAML
south

Si necesitas instalar varias versiones de un mismo paquete en la misma máquina pruebas con virtualenv

Actualización: las últimas versiones de Python ya incorporan PIP de serie.

Enlaces:
Tutorial de Python virtualenv
Distribute y pip¶
Cómo instalar un paquete Python con pip




Tecnologia

Cómo bajar una imagen con Python de la Web, transformala y guardala como archivo local


Si necesitas bajar una imagen con Python  de la Web, transfórmala y guardarla como archivo local, este ejemplo puede ser útil.

bajar una imagen con Python de la Web

Código para bajar una imagen con Python de la Web:

from PIL import Image
from urllib import urlopen
from StringIO import StringIO

URL = 'http://g.cdn.mersap.com/fotografia/files/2013/07/locas-imagenes-10.jpg'
data = urlopen(URL).read() # descarga y almacena la imagen en una cadena
file = StringIO(data) # trata la cadena como un fichero
img = Image.open(file) # lee el fichero y devuelve la imagen
print img.size # informa del tamaño
print img.format # formato
print img.info # meta información
img_rot = img.rotate(90) # rotar la imagen 90 grados
img_rot.save('/home/dmiro/imagenlocal.jpg') # y salvar la imagen en local
print "imagen salvada"

Resultado:

(620, 425)
JPEG
{'jfif': 258, 'jfif_unit': 0, 'adobe': 100, 'jfif_version': (1, 2),
 'adobe_transform': 100, 'jfif_density': (100, 100)}
imagen salvada

Aquí una pequeña explicación de cada una de las librerías utilizadas en el código

StringIO y cStringIO

StringIO proporciona un medio adecuado para trabajar con texto en memoria utilizando la API de archivo (leer, escribir, etc.) y por lo tanto implementa las mismas . Hay dos implementaciones separadas. La versión cStringIO está implementada en C para aumentar la velocidad, mientras que StringIO está escrita en Python para la portabilidad.

PIL

Python Imaging Library (PIL) es una libreria que añade tratamiento de imágenes a Python. Es compatible con muchos formatos de archivo y proporciona capacidades de procesamiento de imágenes y gráficos.

urllib

El módulo urllib proporciona una interfaz de alto nivel para obtener datos de la WWW. En particular, la función urlopen () es similar a la Built-in function open() pero acepta una URL en lugar de un nombre de archivo:

urlopen(url)
Abre un socket a un servidor de algún lugar en la red. Si la conexión no se puede hacer se produce la excepción IOError. Si todo iba bien, se devuelve un objeto de tipo fichero, compatible con los métodos: read(), readline(), readlines(), fileno(), close(), info(), getcode() y geturl()

urlretrive(url, [filename])
Copia el recurso de red indicado la URL a un archivo local. Devuelve una tupla (filename, headers) donde filename es el nombre del archivo local bajo el que se puede encontrar el recursos y las cabeceras es cualquier método de objeto devuelto por urlopen(). El segundo argumento, si está presente, especifica la ubicación del archivo donde se copia el recurso. En su defecto será un archivo temporal.