martes, 31 de julio de 2018

Receta Python 3 No. 6-9: Decodificar y Codificar Dígitos Hexadecimales

1. Problema

Decodificar una cadena de caracteres representada con dígitos hexadecimales en una representación binaria, y codificar una cadena de bytes como un valor hexadecimal.

2. Solución

El módulo nativo binascii permite decodificar o codificar una cadena de dígitos hexadecimales a través de sus diferentes funciones: b2a_hex() y a2b_hex() (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python decodificar-codificar-hexadecimal.py [enlace alternativo]:

Prueba de ejecución:


b'507974686f6e'
b'Python'

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

lunes, 30 de julio de 2018

Receta Python 3 No. 6-8: Interactuar con una Base de Datos Relacional

1. Problema

Realizar operaciones básicas sobre una base de datos relacional.

2. Solución

El módulo sqlite3 provee mecanismos para el tratamiento de bases de datos relacionales basadas en archivos. Este módulo se basa en la implementación de SQLite (Beazly, Jones, 2013).

Python también ofrece soporte para motores de bases de datos relacionales basadas en servidor.

3. Código Python 3

Archivo Python operaciones-base-datos.py [enlace alternativo]:

Prueba de ejecución:


('Python', 3.7)
('Java', 11.0)
('C#', 7.0)
('PHP', 7.0)


('Python', 3.7)

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

sábado, 28 de julio de 2018

Receta Python 3 No. 6-7: Parsear Documentos XML con Nombres de Espacio

1. Problema

Parsear un documento XML usando nombres de espacio.

2. Solución

Por medio de la función parse() se carga el documento XML y luego a partir de una clase Python personalizada se crea la funcionalidad para parsear un documento XML y extraer los nombres de espacio (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python parsear-xml-namespaces.py [enlace alternativo]:

Prueba de ejecución:


<Element '{http://www.w3.org/1999/xhtml}html' at 0x0000021DCEAB3A98>

Documento Web

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 27 de julio de 2018

Receta Python 3 No. 6-6: Leer, Modificar y Escribir un Documento XML

1. Problema

Se requiere leer un documento XML para realizar modificaciones, y finalmente guardar los cambios bajo el mismo formato.

2. Solución

El módulo xml.etree.ElementTree permite a llevar a cabo las tareas requeridas. Se parte de la lectura del documento, se realizan las operaciones o manipulaciones necesarias y finalmente se guardan los cambios en un archivo del mismo formato (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:

<Element 'stop' at 0x000002842F6595E8>

Para ejecutar este archivo se requiere el documento XML de prueba datos.xml [enlace alternativo]. Al final se producirá un archivo datos-nuevos.xml [enlace alternativocon los cambios efectuados en el documento original de prueba.

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

jueves, 26 de julio de 2018

Receta Python 3 No. 6-5: Transformar un Diccionario en un Documento XML

1. Problema

Crear un documento XML a partir de un diccionario.

2. Solución

A través de la Element módulo ElementTree es posible crear los elementos integrales de un documento XML (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python diccionario-a-xml.py [enlace alternativo]:

Prueba de ejecución:


&lgt;Element 'programacion' at 0x00000260CE2195E8>
Python
3.6.4
Guido van Rossum

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

miércoles, 25 de julio de 2018

Receta Python 3 No. 6-4: Lectura Efeciente de un Documento XML Grande

1. Problema

Leer y manipular un documento XML de tamaño de manera eficiente, es decir, usando la menor cantidad de memoria de trabajo posible.

2. Solución

Para resolver este problema de procesamiento de datos incrementales, se ha de recurrir al uso de iteradores y generadores.

La clase xml.etree.ElementTree cuenta con la función iterparse() para el recorrido eficiente de un documento XML (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python recorrido-eficiente-xml.py [enlace alternativo]:

Prueba de ejecución:


Open
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Open
Completed
Completed
Completed
Completed
Completed
Open
Completed
Completed
Completed
Completed
Completed
Completed
Open
Completed
Completed
Open
Open
Completed
Completed
Open
Open
Open
Open
Completed
Open
Completed
Completed
Completed
Completed
Open
Completed
Open
Completed
Completed
Completed
Open
Completed
Completed
Open
Completed
Open
Open
Open
Open
Open
Open
Open
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Completed
Open
Completed
Completed
Completed
Completed
Completed
Completed
Completed

Completed

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

martes, 24 de julio de 2018

Receta Python 3 No. 6-3: Manipular Datos en XML

1. Problema

Extraer y manipular datos desde un documento en formato XML.

2. Solución

El módulo xml cuenta con varios elementos para la manipulación de un documento XML. En particular, la clase ElementTree permite obtener la representación estructural del documento para el recorrido de los elementos de la estructura arbórea (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python manipular-xml.py [enlace alternativo]:

Prueba de ejecución:


Stack Abuse: Cross Validation and Grid Search for Model Selection in Python
Tue, 24 Jul 2018 13:38:00 +0000
http://stackabuse.com/cross-validation-and-grid-search-for-model-selection-in-python/
EuroPython: EuroPython 2018: Get to know other attendees
Tue, 24 Jul 2018 10:37:36 +0000
https://blog.europython.eu/post/176226172432
Mike Driscoll: Understanding Tracebacks in Python
Tue, 24 Jul 2018 05:05:47 +0000
http://www.blog.pythonlibrary.org/2018/07/24/understanding-tracebacks-in-python/
Doing Math with Python: Doing Math with Python in Linux Geek Humble Bundle
Tue, 24 Jul 2018 03:20:00 +0000
http://doingmathwithpython.github.io/humble-bundle-linux-geek.html
Bhishan Bhandari: Python Operators
Mon, 23 Jul 2018 19:32:18 +0000
http://feedproxy.google.com/~r/TheTaraNights/~3/wD-sSXbFmzw/
PyCharm: PyCharm 2018.2 RC 2
Mon, 23 Jul 2018 16:32:55 +0000
http://feedproxy.google.com/~r/Pycharm/~3/opEoXs7_Vzg/
Real Python: Fast, Flexible, Easy and Intuitive: How to Speed Up Your Pandas Projects
Mon, 23 Jul 2018 14:00:00 +0000
https://realpython.com/fast-flexible-pandas/
Sylvain Hellegouarch: How Python and Guido got me my first job and many afterwards
Mon, 23 Jul 2018 13:04:05 +0000
http://www.defuze.org/archives/496-how-python-and-guido-got-me-my-first-job-and-many-afterwards.html
Dataquest: Top 20 Python AI and Machine Learning Open Source Projects
Mon, 23 Jul 2018 12:00:00 +0000
https://www.dataquest.io/blog/top-20-python-ai-and-machine-learning-open-source-projects/
Bhishan Bhandari: File Handling in Python
Mon, 23 Jul 2018 09:36:12 +0000
http://feedproxy.google.com/~r/TheTaraNights/~3/4I-uvlssowQ/
Mike Driscoll: PyDev of the Week: Christopher Neugebauer
Mon, 23 Jul 2018 05:05:55 +0000
http://www.blog.pythonlibrary.org/2018/07/23/pydev-of-the-week-christopher-neugebauer/
Matthew Rocklin: Pickle isn't slow, it's a protocol
Mon, 23 Jul 2018 00:00:00 +0000
https://matthewrocklin.com/blog//work/2018/07/23/protocols-pickle
Philip Semanchuk: A Python 2 to 3 Migration Guide
Sun, 22 Jul 2018 16:52:34 +0000
http://blog.pyspoken.com/2018/02/13/python-2-to-3-migration-guide/
Justin Mayer: Python Development Environment on macOS High Sierra
Sun, 22 Jul 2018 06:00:00 +0000
https://hackercodex.com/guide/python-development-environment-on-mac-osx/
Weekly Python StackOverflow Report: (cxxxv) stackoverflow python report
Sat, 21 Jul 2018 21:21:00 +0000
http://python-weekly.blogspot.com/2018/07/cxxxv-stackoverflow-python-report.html
EuroPython Society: List of EPS Board Candidates for 2018/2019
Sat, 21 Jul 2018 20:58:32 +0000
https://www.europython-society.org/post/176134445630
Bhishan Bhandari: Magic Methods in Python – Dunder Methods
Sat, 21 Jul 2018 19:12:02 +0000
http://feedproxy.google.com/~r/TheTaraNights/~3/7bEQNOpwyRw/
Mike Driscoll: Python 101: Episode #16 – The os Module
Sat, 21 Jul 2018 12:21:31 +0000
http://www.blog.pythonlibrary.org/2018/07/21/python-101-episode-16-the-os-module/
Test and Code: 44: Mentoring - Nina Zakharenko
Sat, 21 Jul 2018 07:15:00 +0000
http://testandcode.com/44
NumFOCUS: NumFOCUS to Hold 2018 Elections for Board of Directors
Fri, 20 Jul 2018 20:54:47 +0000
https://www.numfocus.org/blog/numfocus-to-hold-2018-elections-for-board-of-directors
Bhishan Bhandari: Debugging with breakpoint in Python3.7
Fri, 20 Jul 2018 18:42:42 +0000
http://feedproxy.google.com/~r/TheTaraNights/~3/0NhDXaCirqI/
PyCharm: PyCharm 2018.2 Release Candidate
Fri, 20 Jul 2018 14:13:18 +0000
http://feedproxy.google.com/~r/Pycharm/~3/JCMTX6qp5Zg/
Made With Mu: Mu 1.0.0!
Fri, 20 Jul 2018 14:00:00 +0000
https://madewith.mu/mu/releases/2018/07/20/mu-1.html
Talk Python to Me: #170 Guido van Rossum steps down
Fri, 20 Jul 2018 08:00:00 +0000
https://talkpython.fm/episodes/show/170/guido-van-rossum-steps-down
The No Title® Tech Blog: [Late] Book review – Python Tricks: The Book, by Dan Bader
Fri, 20 Jul 2018 08:00:00 +0000
https://no-title.victordomingos.com/articles/2018/book_review_python_tricks

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

lunes, 23 de julio de 2018

Receta Python 3 No. 6-2: Leer y Escribir Datos en Formato JSON

1. Problema

Se requiere leer y escribir datos codificados en el formato JSON.

2. Solución

Python cuenta con un módulo especializado para el tratamiento de archivos en formato JSON (JavaScript Object Notation): json (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python escribir-leer-json.py [enlace alternativo]:

Prueba de ejecución:

{"lenguaje": "Python", "version": "3.6.4", "creator": "Guido van Rossum"} <class 'str'>

{'lenguaje': 'Python', 'version': '3.6.4', 'creator': 'Guido van Rossum'} <class 'dict'>

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

domingo, 22 de julio de 2018

Receta Python 3 No. 6-1: Leer y Escribir Datos en Formato CSV

1. Problema

Leer y escribir datos en formato CSV (Comma Separated Values).

2. Solución

Por medio de la librería csv es posible leer y escribir datos codificados en CSV (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python manipular-csv.py [enlace alternativo]:
Prueba de ejecución:

['ID', 'Documento', 'Nombre', 'Ingreso', 'Telefono', 'Salario']
['DEA4CB18-8100-8773-B718-186EB2946A8A', '1630060891599', 'Maxwell Coleman', 'March 16th, 2018', '1-439-528-9645', '$9,961']
['BBE1267E-851B-5047-EED9-F86518527C2B', '1620020685899', 'Abbot Riley', 'October 21st, 2017', '1-469-920-1189', '$7,386']
['FEAE607A-0464-5F68-2E8E-068D131C9BD1', '1643061713099', 'Callum Hubbard', 'November 9th, 2017', '1-780-178-6105', '$6,843']
['1DC0E0F2-9387-665C-D99D-D4C339A683EA', '1651081664999', 'Bert Pittman', 'October 24th, 2017', '1-973-992-1822', '$8,308']
...
['A438E001-4B49-A9EE-19E7-2304DBF84021', '1647061256599', 'Steel Nieves', 'March 10th, 2018', '1-777-733-1221', '$7,863']
['23760DE7-A5BB-04B3-1305-44B69BE2398D', '1655111551899', 'Ishmael Stanton', 'April 30th, 2018', '1-343-849-0897', '$8,702']

['58EAE331-73A8-89BE-46EF-D5752ECE6E4F', '1640101982699', 'Hakeem Oneal', 'December 21st, 2017', '1-871-724-7148', '$5,979']

El contenido proviene de la lectura del archivo datos.csv [enlace alternativo].

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

Receta Python 3 No. 5-21: Serializar Objetos Python

1. Problema

Serializar un objeto Python en términos de flujo de bytes.

2. Solución

Serializar un objeto permite su transmisión a través de una conexión de red, su persistencia en un archivo o base de datos.

El módulo pickle permite realizar esta tarea de forma muy simple y directa (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python serializar-objetos.py [enlace alternativo]:

Prueba de ejecución:

Después de ejecutar este script se creará un archivo llamado datos.ser con los datos serializados.

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 20 de julio de 2018

Receta Python 3 No. 5-20: Establecer Conexión y Comunicación con un Puerto Serial

1. Problema

Se requiere leer y escribir datos desde y hacia un puerto serial (interfaz para un sensor o robot).

2. Solución

El paque pySerial -https://github.com/pyserial/pyserial- cuenta con la funcionalidad para establecer comunicación con un dispositivo vía un puerto serial.

3. Código Python 3

Archivo Python comunicacion-puerto-serial.py [enlace alternativo]:

Prueba de ejecución:

En este caso la conexión se realiza frente a un módem con conexión USB.

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

jueves, 19 de julio de 2018

Receta Python 3 No. 5-19: Crear Archivos y Carpetas Temporales

1. Problema

Crear archivos y carpetas temporales para guardar información de trabajo del usuario o de un programa.

2. Solución

El módulo tempfile cuenta con la clase TemporaryFile para la creación de carpetas y archivos temporales (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python carpeta-archivo-temporal.py [enlace alternativo]:

Prueba de ejecución:

Python es tremendo!
La era Python ha empezado!


C:\Users\johno\AppData\Local\Temp\tmpylhxr_7r

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

miércoles, 18 de julio de 2018

Receta Python 3 No. 5-18: Tratar un Descriptor de Archivo Existente como un Objeto de Archivo

1. Problema

A partir de un descriptor de archivo existente definir un objeto de archivo para su correspondiente manipulación.

2. Solución

Para realizar esta tarea se debe usar el método open(). Este método recibe como argumento un descriptor de archivo de bajo nivel (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python descriptor-como-objeto-archivo.py [enlace alternativo]:

Prueba de ejecución:

Este programa no genera ninguna salida. Se observa en la línea 4 la creación de un descriptor de archivo. Y en la línea 7 se envuelve ese descriptor como un objeto archivo: eso se logra con el método open().

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

martes, 17 de julio de 2018

Receta Python 3 No. 5-17: Escribir Bytes en un Archivo de Texto

1. Problema

Escribir bytes en un archivo abierto en modo texto.

2. Solución

Para escribir bytes en un archivo de texto es necesario usar la función buffer (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python bytes-archivo-texto.py [enlace alternativo]:

Prueba de ejecución:


Python!
8

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

lunes, 16 de julio de 2018

Receta Python 3 No. 5-16: Agregar o Cambiar el Sistema de Codificación de un Archivo Abierto

1. Problema

Agregar o cambiar el sistema de codificación de un archivo abierto sin necesidad de cerrarlo.

2. Solución

A través del objeto io.TextIOWrapper() se puede cambiar el sistema de codificación de un archivo ya abierto. El archivo previamente tuvo que haber sido abierto en modo binario (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:

La salida consiste en un documento HTML del sitio Web oficial (enlace alternativo) de Python.

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

Receta Python 3 No. 5-15: Imprimir Nombres de Archivos con Codificación con Errores

1. Problema

A la hora en enlistar el contenido de un directorio algunos nombres de archivos generan la excepción UnicodeEncodeError.

2. Solución

Para resolver este tipo de problema se recomienda usar un bloque try..except para capturar la excepción UnicodeEncodeError (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:

mal\udce4.txt

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

domingo, 15 de julio de 2018

Receta Python 3 No. 5-14: Omitir la Codificación del Nombre de Archivo

1. Problema

Se desea operar sobre nombre de archivos independiente de la codificación particular.

2. Solución

En Python, por defecto los nombres de archivos se decodifican y codifican por el sistema que retorna la función sys.getfilesystemencoding().

Para lograr la omisión de la codificación es necesario especificar el nombre del archivo por medio de una cadena de bytes plana (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python omision-codificacion.py [enlace alternativo]:

Prueba de ejecución:


utf-8
['antaño.txt']
[b'anta\xc3\xb1o.txt']
Los días azules

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

Receta Python 3 No. 5-13: Listar el Contenido de un Directorio

1. Problema

Mostrar los archivo almacenados en un directorio.

2. Solución

La función listdir() del módulo os permite listar los archivos de un directorio (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:


bfsvc.exe
bootstat.dat
comsetup.log
DDACLSys.log
diagerr.xml
diagwrn.xml
DtcInstall.log
explorer.exe
HelpPane.exe
hh.exe
LDPINST.LOG
LkmdfCoInst.log
mib.bin
notepad.exe
NvContainerRecovery.bat
PFRO.log
Professional.xml
py.exe
pyshellext.amd64.dll
pyw.exe
regedit.exe
setupact.log
setuperr.log
splwow64.exe
system.ini
twain_32.dll
win.ini
WindowsShell.Manifest
WindowsUpdate.log
winhlp32.exe
WMSysPr9.prx

write.exe

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

sábado, 14 de julio de 2018

Receta Python 3 No. 5-12: Comprobar la Existencia de un Archivo

1. Problema

Comprobar si un archivo o directorio existen en el sistema de archivos.

2. Solución

El módulo os provee el método exists(). Este método recibe como argumento una cadena de caracteres que representa el archivo o directorio a comprobar (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:


True
False
True
True

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

miércoles, 11 de julio de 2018

Receta Python 3 No. 5-11: Manipular Nombres de Rutas

1. Problema

Manipular nombres de rutas de archivos o directorios.

2. Solución

El módulo os.path provee funciones para la manipulación de cadenas de caracteres que representan rutas (Beazly, Jones, 2013).

3. Código Python 3

Archivo Python manipulaciones-rutas.py [enlace alternativo]:

Prueba de ejecución:

fibonaccis.txt
D:\Dropbox\Pro\Recetas\Python3\venv\Ch05
temporal\datos\fibonaccis.txt
C:\Users\johno\Archivos\datos.csv
('~\\Archivos\\datos', '.csv')

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

martes, 10 de julio de 2018

Receta Python 3 No. 5-10: Mapeo de Memoria para Archivos Binarios

1. Problema

Asignar o mapear memoria de archivos binarios sobre un arreglo de bytes mutable.

2. Solución

En Python se cuenta con el módulo mmap para la asignación de o mapeo de memoria de archivos (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:


1000000
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'Python es genial!'

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

lunes, 9 de julio de 2018

Receta Python 3 No. 5-9: Leer Datos Binarios dentro de un Buffer Mutable

1. Problema

Leer datos binarios dentro de un buffer mutable (los datos se modificarán aquí) sin ninguna copia intermedia.

2. Solución

La lectura de datos binarios en un buffer mutable se lleva a cabo por medio del método readinto(). Previamente habrá que crear un arreglo de bytes a través de bytearray() (Beazly, Jones, 2013).

3. Código Python 3


Prueba de escritorio:


bytearray(b'Homo Deus: una historia del manana')
bytearray(b'Homo')
34

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O