Python avanzado
-
Envío de correos desde Python
¿Qué es MIME?
MIME (Extensiones Multipropósito de Correo de Internet) es un estándar que permite la transmisión de varios tipos de contenido a través del correo electrónico, más allá del texto simple.
- Versatilidad: MIME permite incluir texto, imágenes, audio, video y otros tipos de archivos en los mensajes de correo electrónico.
- Codificación: Especifica métodos para codificar datos no textuales en texto plano para una transmisión segura por Internet.
- Encabezados: Agrega campos adicionales a los encabezados estándar del correo electrónico para indicar el tipo y la codificación del contenido.
Ejemplo de Código, vemos que es una clase:
import smtplib
import mimetypes
from email.message import EmailMessage
from email.utils import make_msgid
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encodersConfiguración del servidor SMTP
smtp_server = «smtp.gmail.com»
smtp_port = 587
username = «tu_correo@gmail.com»
password = «tu_contraseña»Creación del mensaje
msg = MIMEMultipart()
msg[‘From’] = username
msg[‘To’] = «destinatario@ejemplo.com»
msg[‘Subject’] = «Asunto del Correo»Cuerpo del correo
body = «Hola, este es un correo con un archivo adjunto.»
msg.attach(MIMEText(body, ‘plain’))Adjuntar archivo
filename = «archivo.txt»
attachment = open(filename, «rb»)mime_base = MIMEBase(‘application’, ‘octet-stream’)
mime_base.set_payload(attachment.read())
encoders.encode_base64(mime_base)
mime_base.add_header(‘Content-Disposition’, f»attachment; filename= {filename}»)msg.attach(mime_base)
Envío del correo
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.send_message(msg)
server.quit()print(«Correo enviado con éxito.»)
Este código hace lo siguiente:
- Configura el servidor SMTP.
- Crea un mensaje MIME multipart.
- Adjunta un cuerpo de texto al correo.
- Adjunta un archivo.
- Envía el correo a través del servidor SMTP
De no existir el archivo nos remitirá este error:
attachment = open(filename, «rb»)
FileNotFoundError: [Errno 2] No such file or directory: ‘archivo.txt’ -
Cargar una imagen desde un archivo en Python.
Para cargar una imagen desde un script en Python, debemos hacer uso de biblioteca PIL. De lo contrario, lanzará el error: ‘ModuleNotFoundError: No module named ‘PIL’.
la biblioteca de imágenes de Python (PIL). Este error generalmente ocurre cuando el módulo
PIL
no está instalado en tu entorno de Python. Para resolver esto, puedes instalar la bibliotecaPillow
, que es la versión actualizada y más compatible dePIL
. Aquí te explico cómo hacerlo:- Abre tu terminal o símbolo del sistema
- Ejecuta el siguiente comando:
- Tambien es muy posible que nos falle otra vez y ahora con este mensaje al intentar instalar pillow.
mas o menos asi:
Este mensaje de error indica que el comando
pip
no se reconoce en tu sistema porque no está configurado correctamente en tu variable de entornoPATH
. Aquí te dejo los pasos para solucionarlo:Para reproducir o mostrar una imagen en Python, puedes usar la biblioteca
Pillow
, que ya mencionamos anteriormente es posible que hasta que no reinicies el P.C. siga dando error.Aquí tienes un ejemplo simple de cómo hacerlo:
- Primero, asegúrate de tener
Pillow
instalado: - Luego, usa el siguiente código para abrir y mostrar una imagen:
Este código abrirá la imagen especificada por la ruta y la mostrará en una ventana. Solo tienes que reemplazar
'ruta/a/tu/imagen.jpg'
con la ruta de la imagen que deseas mostrar.En este ejemplo de código fuente, he seleccionado una foto del blog de un café, y ambos archivos están en la misma carpeta, por lo que deberían abrirse de esta manera:
-
Modulo time en python
Con la ayuda de Microsoft Copilot, su compañero de IA, se ha creado este artículo.
– Módulo
time
en Python proporciona varias funciones para trabajar con el tiempo y la fecha. A continuación, se describen algunas de las funciones más comunes que ofrece:time.time()
: Devuelve el tiempo actual en segundos desde la época (1 de enero de 1970), que fue cuando los que crearon este módulo así lo decidieron el inicio.time.sleep(secs)
: Pausa la ejecución del programa durante el número de segundos especificado.time.localtime([secs])
: Convierte un número de segundos desde la época en una estructura de tiempo local. Si no se especifican los segundos, utiliza el tiempo actual.time.strftime(format, t)
: Convierte una tupla de tiempo o una estructura de tiempo en una cadena de caracteres según el formato especificado.time.strptime(string, format)
: Convierte una cadena de caracteres en una estructura de tiempo según el formato especificado.
Ejemplo de uso:
Más ejemplos de cómo funcionan estas funciones:
-
Base de datos SQLite3 y DB browser
El módulo que viene preinstalado en Python para trabajar con bases de datos es SQLite, y se importa de la siguiente manera:
- import sqlite3
Este módulo facilita la conexión a SQLite mediante el método ‘connect’, al cual debemos especificar la ruta del archivo; si el archivo no existe, se creará automáticamente.
Para evitar que no de un error devemos de poner un condicional para que no cree la tabla si ya existe, con un if mas o menos de esta forma:
- CREATE TABLE if not exists nombre de la tabla
Debemos cerrar con close() porque si no lo hacemos, no podremos trabajar con ella.
Ejemplo de codigo:
Podemos crear el codigo de SQlite desde la aplicacion que ya te trae desde su WEB o bien copia y pegar.
Lo instalamos desde la página web httpswww.sqlite.org y luego procedemos a la instalación.
DB Browser for SQLite es el editor que nos permite interactuar con las bases de datos.
DB Browser for SQLite pagina de descarga:
Forma de introducir datos en una base:
- cursor.executemany(«INSERT INTO personal VALUES(?,?,?)», nombre de la tabla)
-
Modulos y paquetes en Python
- Los módulos son archivos que almacenan datos, clases y variables para ser utilizados según sea necesario en el programa.
Para importar un módulo, archivo o clase en Python, utilizamos la palabra reservada ‘import’ seguida del nombre del módulo que deseamos importar. La sintaxis correcta sería:
- from nombre archivo import nombre clase
Los módulos deben ubicarse en el mismo directorio donde se está desarrollando la aplicación.
- Los paquetes se utilizan cuando el código es extenso. Para organizar mejor el trabajo, creamos directorios que contienen archivos relacionados entre sí, generalmente pertenecientes a la misma categoría.
El método para hacerlo sería:
- from nombre carpeta . nombre archivo impor clase o funcion que queremos
Se deve de poner en las carpetas un archivo vacio con el nombre de __init__.py
-
La herencia simple y multiple en Python permite crear una clase derivada que hereda atributos y métodos de una única clase base.
Para heredar de una clase a otra, pasamos la clase que queremos aprovechar entre paréntesis. Veamos este ejemplo:
La herencia múltiple es similar a la simple, pero involucra a dos elementos, como se muestra en este ejemplo:
-
Que es un constructor
Es una funcion que creamos dentro de una clase (class).
Los constructores se utilizan para crear instancias sobre los objetos de una clase.
Su funcion es asignar valor a los elementos de una clase, se asigna con la instuccion def __init__(self)
Self se utiliza dentro de todas las clases.
Ejemplo de codigo:
-
Clases (class): Programación POO, y cómo abrir una página WEB en Python.
La programación orientada a objetos (POO) se basa en agrupar el código en objetos para facilitar su reutilización. Todo se define como objetos utilizando la palabra clave ‘class’. Las funciones contenidas en una clase se denominan métodos y es importante recordar incluir el término ‘self’ dentro de ellos.
Seria algo asi:
- class LaClase :# Se debe de escribir la primera en mayúscula ( Pascal Case )
- def la_fucion (self):
- print (» Hola mundo «)
- # La llamada a la clase
- laclase=LaClase()
- laclase.la_fucion()
import webbrowser # Importador para llamar una pagina web
class ElbloddeMia (): # Definicion de clase con el nombre ElblogdeMia
programacion =» Lenguajes de programación » # Objetos instanciados
historia =» Quien fue Viriato»
logistica =» Ley de tacógrafo»De otra forma serian tediosos y enormes de tamaño nuestro programa en el sistema secuencial eso es lo que ocurre
Ejemplo de codigo fuente:
Podemos definir métodos en las clases con def.
Para crear Código fuente en POO ( programación orientada a objeto. )
Tenemos que poner los archivos de las clases dentro de la misma carpeta y definir el main inicial.
Sigue este articulo donde pongo los ejemplos en POO. de una calculadora.
- Calculadora creada en POO Python y hacer narrar al PC las operaciones – Blog Daniel & Mia (danielcaraballo.es)
- class LaClase :# Se debe de escribir la primera en mayúscula ( Pascal Case )
-
Calculadora creada en POO Python y hacer narrar al PC las operaciones. Parte uno
Todos los ARCHIVOS de las clases y módulos deben de estar guardados dentro de la misma carpeta:
Este sería el main:
La clase principal donde se toman todas las decisiones:
- Forma de hacer hablar al PC: ____________________________________________________________________
- Aqui están los condicionales, menú
- import win32com.client# Aqui importamos
- Debes de instalar el módulo pypiwin32 desde la línea de comandos así:
- Si todo esta correcto debería ser como en esta imagen:
- pip no se reconoce como un comando interno o externo -> con este mensaje instala la version de Python de nuevo.
- speaker = win32com.client.Dispatch(«SAPI.SpVoice») # Este es el código que hace que el ordenador narre las operaciones
__Fin parte uno.
Calculadora creada en POO Python. Parte dos. – Blog Daniel & Mia (danielcaraballo.es)
-
Calculadora creada en POO Python. Parte dos.
Desde la clase principal, a través de los condicionales creamos las llamadas con los if a las clases que hacen varios tipos de operaciones así:
- if menu == «H»: # Salir del programa
- print («\n\n\t El blog de Mia!!! ¡¡¡HASTA PRONTO !!!\n\n»,»\n Te invito a ver la WEB el Blog de Mia»)
- reproducir = » El blog de Mia HASTA PRONTO Te invito a ver la WEB el Blog de Mia» speaker.Speak(reproducir)
- time.sleep(6) # Pusa en programa
- webbrowser.open(«https://elblogdemia.es/»)# Llamada a la página WEB webbrowser.open(«https://danielcaraballo.es/»)# Llamada a la página WEB system («CLS») break # Salida y limpieza de pantalla de la consola de comandos
Por ejemplo, el area y perímetro de un círculo:
Recuerda que para que las importaciones no den error deben de estar en la misma carpeta.
seguimos con las clases class.
Otros módulos como este que hace que cambie el color de la consola de comandos:
Modulo para realizar operaciones en binario:
Módulo de operaciones suma, resta, division, también hacemos llamada a archivo de texto donde tenemos el menu:
Esta imagen esta reducida para verla cliquea sobre la imagen:
__Fin parte dos.
- if menu == «H»: # Salir del programa