En esta publicación te enseñaré a extraer el listado de emails de un fichero.
- Tiempo de implementación: 2 min
- Nivel de dificultad: Fácil
Este script te permitirá extraer emails y correos electrónicos de manera eficiente, funcionando como un potente extractor de correos.
EMail Extractor: Script en Python para obtener los correos electrónicos
El propósito general de este script en Python es extraer emails y correos electrónicos de un archivo de texto y guardarlos en un archivo CSV. A través de expresiones regulares, este script busca patrones que se asemejen a direcciones de correo electrónico, los extrae y posteriormente los exporta a un archivo CSV, garantizando que el nombre del archivo de salida sea único.
Copia y pega el contenido de este bloque en un fichero de texto que puedes llamar: extraeremails.py:
# -------------------------------------------------------------
# Autor: Daniel Pajuelo
# Web: https://danielpajuelo.com
# Versión: 1.0
# -------------------------------------------------------------
import re
import csv
import os
import sys
def extract_emails(file_path):
email_regex = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
with open(file_path, 'r', encoding='utf-8') as file:
file_content = file.read()
emails = re.findall(email_regex, file_content)
return emails
def save_emails_to_csv(emails, output_filename):
base_name, ext = os.path.splitext(output_filename)
counter = 1
while os.path.exists(output_filename):
output_filename = f"{base_name}_{counter}{ext}"
counter += 1
with open(output_filename, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Email"])
for email in emails:
writer.writerow([email])
def main():
if len(sys.argv) != 2:
print("Uso: python script_name.py [input_file_path]")
return
input_filepath = sys.argv[1]
if not os.path.exists(input_filepath):
print("El archivo de entrada no existe.")
return
base_name, _ = os.path.splitext(input_filepath)
output_filename = f"{base_name}_emails.csv"
emails = extract_emails(input_filepath)
if emails:
save_emails_to_csv(emails, output_filename)
print(f"Los emails han sido guardados en {output_filename}")
else:
print("No se encontraron emails en el archivo proporcionado.")
if __name__ == "__main__":
main()
Ejemplos de uso
Este script está diseñado para ser utilizado desde la línea de comandos y espera que se le proporcione la ruta de un archivo de texto como argumento. A continuación, se presentan tres escenarios posibles:
- Extraer correos de un archivo de texto común:
python script_name.py path/to/textfile.txt
Podría ser utilizado para extraer correos electrónicos de un archivo que contiene, por ejemplo, logs o textos de un foro. - Extraer correos de un archivo de exportación de emails:
codepython script_name.py path/to/emails_export.txt
Ideal para extraer direcciones de correo electrónico de un archivo que contiene correos electrónicos exportados de un gestor de listas de correo. - Extraer correos de un documento con actas de reuniones:
python script_name.py path/to/meeting_minutes.txt
Útil para recuperar todas las direcciones de correo electrónico mencionadas en un archivo de actas de reuniones.
Este extractor de correos es versátil y puede usarse para extraer emails de una web, sacar emails de diferentes tipos de archivos, o incluso extraer correos de un texto en Excel (convirtiendo primero el archivo de Excel a texto).
Explicación del código
Vamos a descomponer cada función:
extract_emails(file_path)
- Input: Ruta del archivo (
file_path
) desde el cual se extraerán los correos electrónicos. - Proceso: Abre y lee el archivo, y utiliza una expresión regular para encontrar todas las coincidencias que parecen ser emails o correos electrónicos.
- Output: Lista de correos electrónicos extraídos.
save_emails_to_csv(emails, output_filename)
- Input: Lista de
emails
y nombre deseado para el archivo de salida (output_filename
). - Proceso: Verifica si un archivo con el nombre deseado ya existe y ajusta el nombre de ser necesario para evitar sobreescritura. Luego, escribe las direcciones de correo electrónico en un archivo CSV.
- Output: Archivo CSV con las direcciones de correo electrónico.
main()
- Proceso: Verifica que la invocación del script tenga el número correcto de argumentos (la ruta al archivo de entrada). Si los argumentos son correctos, y el archivo existe, llama a las funciones definidas anteriormente para extraer los correos electrónicos y guardarlos en un archivo CSV.
Bloque if __name__ == "__main__":
- Ejecuta la función
main()
solo si el script es invocado directamente (no cuando es importado como un módulo).
Adapta el script a tus necesidades
Este script en Python es una herramienta poderosa para extraer correos electrónicos de diversos tipos de archivos. Ya sea que necesites extraer emails de una web, sacar emails de documentos de texto, o incluso extraer correo de un texto en Excel, este extractor de correos te ayudará a hacerlo de manera eficiente. Recuerda que puedes adaptar el script según tus necesidades específicas, como por ejemplo para trabajar con archivos CSV de correos.»