Buscando artículos sobre "python"
3-abril-2022
admin

Gestión de múltiples versiones de pyton en Ubuntu

– Paso previo, añadir software-properties-common y repositorio.

sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa

– Instalación de las versiones de python: 3.10 y 2.7.

sudo apt install python3.10
python3.10 --version

sudo apt install python2.7
python3.7 --version

– Configuración de ubuntu para facilitar el cambio de una version a otra.

//Creas enlaces simbolicos con update-alternatives
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 2

//Menu para seleccionar la version elegida
sudo update-alternatives --config python

//comprobar la versión activa
python --version

https://www.python.org/downloads/

2-agosto-2018
admin

Parámetros externos en Python

Ejemplo de configuración en el eclipse de parámetros externos para una aplicación realizada en python.




Como se puede ver para leerlos es simplemente:

import sys
....
variable = sys.argv[1]
16-julio-2018
admin

Uso de wait en Selenium

En los test de selenium podemos esperar a que se ejecuten determinadas acciones para facilitar el testeo de las web.

Ejemplo 1: Este ejemplo espera hasta 10 segundos antes de lanzar una excepción TimeoutException a menos que encuentre el elemento myDynamicElement para regresar dentro de 10 segundos.
Es interesante combinarlo con las ExpectedConditions aunque también se puede hacer consulta estática.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()



Ejemplo 2: En este se establece 10 segundos como el tiempo de espera máxima para buscar cualquier elemento.

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")



Fuente

10-febrero-2016
admin

Logging en python

Ejemplo de configuración de log para python. Se utiliza un fichero de configuracion llamado logging.conf, donde se definen dos manejadores uno a nivel de consola StreamHandler y otro a nivel de fichero FileHandler.
StreamHandler: Escribirá en la salida estandar del sistema las trazas con nivel INFO.
FileHandler: Escribirá en un fichero llamado Result_Operations.log las trazas con nivel DEBUG.
En ambos se formatean los mensajes para que sólo muestre el contenido del mensaje.

from logging import config
....
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('root')

logger.debug("mensaje para el FileHandler")
logger.info("mensaje para ambos")

logging.conf

[loggers]
keys=root

[handlers]
keys=FileHandler,consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=FileHandler,consoleHandler

[handler_FileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=("Result_Operations.log",)

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format= %(message)s
datefmt=

Documentación oficial logging python
Documentación de los tipos de manejadores

5-febrero-2016
admin

SyntaxError: Non-ASCII character ‘\xe9’

En python para definir la codificación del archivo se puede colocar al inicio del archivo la siguiente línea de código.

# -*- coding: utf-8 -*-

De esta forma se solucionan los errores del tipo: Non-ASCII character ‘\xe9’

Más info PEP 0263 — Defining Python Source Code Encodings.

21-enero-2016
admin

Modificar el tamaño de una imagen y añadir una marca de agua en python

Pillow es una variante (o fork) de la popular librería PIL (Python Image Library) que permite procesar con facilidad imágenes con Python 2.x/3.x.

Permite consultar información básica de una imagen como su tamaño, el formato que tiene, el tipo de imagen (bits/pixel, BN/color, etc.), es posible cambiar su tamaño, recortar un área, girar, aplicar filtros y efectos, convertir el tipo de imagen y su formato, etc.

Para instalar la librería basta con ejecutar el comando.

 pip install Pillow

Un ejemplo de uso puede ser:

import PIL
from PIL import Image

img = Image.open("C:\\foto.jpg")
img = img.resize((500, 500), Image.ANTIALIAS)

imgAgua= Image.open("C:\\agua.jpg")
img.paste(imgAgua, (25, 25))

img.save("C:\\imagenFinal.jpg")

En el ejemplo se abre la imagen foto.jpg para redimensionarla a un ancho y alto de 500px.
Además, se le añade encima una imagen agua.jpg en las coordenadas 25,25 a modo de marca de agua o firma.

Documentación: Link1, Link2

10-diciembre-2015
admin

Descargar imágenes de la web usando Python

Existen distintos métodos para descargarse imágenes de la web desde una aplicación python. A continuación vamos a exponer dos ejemplos:

Ej 1/ Utilizando el módulo httplib

import httplib

...

'''
   Se conecta con el servidor y se hace la petición de la imagen
'''
conn = httplib.HTTPConnection("www.url.com")
conn.request ("GET", '/img/imagen.jpg')
r = conn.getresponse()
	
'''
    se guarda la imagen en disco mediante la creación de un fichero
'''
fichero = file( '/home/img/imagen.jpg', "wb" )
fichero.write(r.read())
fichero.close()
...

Ej 2/ Utilizando los módulos PIL, urllib y StringIO

from PIL import Image
from urllib import urlopen
from StringIO import StringIO
 
'''
   Se descarga la imagen y se almacena en una cadena
'''
URL = 'http://www.url.com/img/imagen.jpg'
data = urlopen(URL).read() 

'''
   Se convierte a fichero con StringIO y luego se convierte en imagen
'''
file = StringIO(data) 
img = Image.open(file) 

'''
   Se almacena en disco
'''
img.save('/home/img/imagen.jpg')
30-noviembre-2015
admin

Python throws UnicodeEncodeError

Documentación oficial Caracteres Unicode en Python

Ejemplo:

'''
   Se declara una variable con caracteres unicode
'''
>>> u = unichr(40960) + u'abcd' + unichr(1972)
>>> u.encode('utf-8')
'\xea\x80\x80abcd\xde\xb4'


'''
   Se aplica un encode ASCII para la conversión de la variable. 
   Se puede ver que falla.
'''
>>> u.encode('ascii')                       
Traceback (most recent call last):
    ...
UnicodeEncodeError: 'ascii' codec can't encode character u'\ua000' in
position 0: ordinal not in range(128)


'''
   Se vuelve a aplicar diciéndole que ignore los caracteres unicode
   superiores a los 8 bits (127)
'''
>>> u.encode('ascii', 'ignore')
'abcd'


'''
   Se vuelve a aplicar diciéndole que reemplace esos carácteres por 
   U+FFFD (REPLACEMENT CHARACTER)
'''
>>> u.encode('ascii', 'replace')
'?abcd?'


'''
   Se vuelve a aplicar reemplazándo esos caracteres por su equivalente html.
'''
>>> u.encode('ascii', 'xmlcharrefreplace')
'& #40960;abcd& #1972;'
25-noviembre-2015
admin

Módulo de python para traducciones: Goslate

Google Translate tiene un API que permite usar el traductor desde un programa, en el caso de Python se tiene goslate.

Documentación oficial de Goslate

Para utilizarlo basta con instalarlo.

pip install goslate

Ejemplos de uso

1/ Detectar el lenguaje

import golsate
gs = goslate.Goslate()
language_id = gs.detect('hallo welt')
language_desc = gs.get_languages()[language_id]

language_id = de
language_desc = German

2/ Traducir una palabra al español

import golsate
gs = goslate.Goslate()
word = gs.translate('hello','es')

word = hola

Nota: Otra opción en python puede ser utilizar Translate API Client Library for Python

21-noviembre-2015
admin

Ejemplo de uso de SQlite3 con Python

SqLite es un paquete de software de dominio público que proporciona un sistema de gestión de base de datos relacional.
Documentación oficial de SQlite3 en python 3.5

Ejemplo sencillo de uso:

import sqlite3
....
con = sqlite3.connect('C:\\base_datos.db')
cursor = con.cursor()
print 'Conectado a la BD base_datos.db'
....
self.cursor.execute('''CREATE TABLE IF NOT EXISTS COMMENT(
                    id    INT    NOT NULL,
                    comment    TEXT    NOT NULL,
                    user    TEXT
                    )''')
print 'Creada la tabla Comment'
....
str2 = "INSERT INTO COMMENT (id, comment, user) "
str2 = str2 + "VALUES (?, ?, ? )"
self.cursor.execute(str2, (1, "comentario realizado", "pedro"))
print 'Comentario insertado correctamente'
....
self.cursor.execute("DROP TABLE IF EXISTS COMMENT")
print 'Borrada la tabla Comment'
....

Nota: Al intentar conectar a la base de datos si no existe se creará con el nombre y la ruta que se especifique.

Páginas:12»

Categorias

Linkedin