Curso Python. Volumen XVI: Librerías estándar. Parte I

Escrito por Javier Ceballos Fernández
Programación

Bienvenidos un día más al curso de Python, llevamos muchas semanas programando y seguro que más de uno le ha entrado inquietud de ir haciendo cosas por su cuenta. Por eso hoy os traemos las librerías estándar de Python. De este modo sabréis qué librería de Python deberíais escoger para la realización de vuestro programa. Así que pongámonos manos a la obra.

Las librerías estándares de Python vienen instaladas por defecto en Python, por lo que no os preocupéis por tener que ir a buscarlas. Os vamos a mencionar cada una de ellas y os indicaremos para qué sirven. Iréis comprobando que para muchas cosas Python ya tiene una librería, y no os hará falta descargaros nada adicional.

Librerías

Interfaz al sistema operativo

Para poder interactuar con el sistema operativo, tendremos que importar la librería “os”. Si queréis saber toda su funcionalidad sólo tendréis que abrir la consola de Python e introducir las siguientes instrucciones:

>>>import os
>>>dir(os)

Si además queréis un pequeño manual de uso introducir el siguiente comando:

>>>help(os)

Para tareas diarias de administración de archivos y directorios, como puede ser copiar archivos o moverlos, la librería “shutil” provee una interfaz de más alto nivel que es más fácil de utilizar.

Comodines de archivos

Para hacer una búsqueda con comodines en un directorio podemos utilizar la librería “glob” provee de una función para hacer listas de archivos:

>>>import glob
>>>glob.glob('*.py')
['test.py', 'calculadora.py', 'banco.py']

Argumentos de línea de órdenes

Los programas frecuentemente necesitan procesar argumentos pasados por línea de comandos. Estos argumentos son almacenados en el atributo “argv” de la librería “sys” como una lista. Por ejemplo, la siguiente salida resulta de ejecutar “python demo.py uno dos tres” en la línea de órdenes:

>>>import sys
>>>print(sys.argv)
['demo.py', 'uno', 'dos', 'tres']

Si utilizamos la librería “getopt” que procesa “sys.argv” usando las convenciones de la función de Unix “getopt()”, esta nos devolverá los argumentos. La librería “argparse” provee un procesamiento más flexible de la línea de órdenes.

Redirección de la salida de error y finalización del programa

La librería “sys” también tiene las operaciones “stdin”, “stdout”, y “stderr”. Este último es útil para emitir mensajes de alerta y error para que se vean incluso cuando se haya redireccionado “stdout”:

>>>sys.stderr.write('Alerta, no se encontró archivo de log\n')

Alerta, no se encontró archivo de log

Si lo que se quiere es finalizar un programa la forma más rápida es ejecutar la instrucción “sys.exit()”.

Coincidencia en patrones de cadenas

La librería “re” proporciona herramientas que utilizan expresiones regulares para un procesamiento avanzado de cadenas. Con ello nos permite el realizar búsquedas o comparaciones complejas, las expresiones regulares ofrecen soluciones concisas y optimizadas:

>>>import re
>>>re.findall(r'\bt[a-z]*', 'los tigres no comen trigo')
['tigres', 'trigo']
>>>re.sub(r'(\b[a-z]+) \1', r'\1', 'pez en el el agua')
'pez en el agua'

Cuando se necesita algo más sencillo podéis utilizar los métodos de las cadenas porque son más fáciles de leer y depurar.

>>> 'te para tos'.replace('tos', 'dos')
'te para dos'

Matemática

La librería “math” permite el acceso a las funciones de la biblioteca “C subyacente” para la matemática de punto flotante:

>>> import math
>>> math.cos(math.pi / 4)
0.70710678118654757
>>> math.log(1024, 2)
10.0

La librería “random” proporciona herramientas para realizar selecciones al azar:

>>> import random
>>> random.choice(['coche', 'moto', 'camion'])
'moto'
>>> random.sample(range(100), 10) # elección sin reemplazo
[50, 69, 19, 54, 28, 81, 61, 57, 18, 83]
>>> random.random() # un float al azar
0.17970987693706186
>>> random.randrange(8) # un entero al azar tomado de range(6)
6

La librería “statistics” calcula las operaciones de estadística básicas (la media, mediana, varianza, etc) de datos numéricos:

>>> import statistics
>>> datos = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]
>>> statistics.mean(datos)
1.6071428571428572
>>> statistics.median(datos)
1.25
>>> statistics.variance(datos)
1.3720238095238095

El proyecto “SciPy” tiene muchas otras librerías para cálculos numéricos.

Fechas y tiempos

La librería “datetime” ofrece clases que os permitirán el manejo de fechas y horas tanto de manera simple como compleja. Aunque soporta aritmética sobre fechas y horas, realmente su implementación está más orientada a manejar las distintas partes o el formateo de la salida. La librería también soporta objetos para el manejo de las zonas horarias.

>>> # las fechas son fácilmente construidas y formateadas
>>> from datetime import date
>>> hoy = date.today()
>>> hoy
datetime.date(2009, 7, 19)
>>> # nos aseguramos de tener la info de localización correcta
>>> import locale
>>> locale.setlocale(locale.LC_ALL, locale.getdefaultlocale())
'es_ES.UTF8'
>>> hoy.strftime("%m-%d-%y. %d %b %Y es %A. hoy es %d de %B.")
'04-21-17. 21 abr 2017 es viernes. hoy es 21 de abril.'
>>> # las fechas soportan aritmética de calendario
>>> nacimiento = date(1964, 7, 31)
>>> edad = hoy - nacimiento
>>> edad.days
14368

Esto es todo por hoy, como habréis podido comprobar Python tiene muchas librerías que nos facilitan la programación, esperemos que os resulten de utilidad. Os recordamos a todos que nunca es tarde para iniciar el curso de Python y que contamos con un índice en el que pueden encontrar todo lo que hemos ido tratando en el curso.


Últimos análisis

Valoración RZ
8
Valoración RZ
9
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10