elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python3] Ayuda con manipulacion de ficheros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python3] Ayuda con manipulacion de ficheros  (Leído 2,333 veces)
reconFito

Desconectado Desconectado

Mensajes: 31


Ver Perfil
[Python3] Ayuda con manipulacion de ficheros
« en: 1 Febrero 2020, 01:51 am »

Hola a todos los que lean esto.
El siguiente script trata de automatizar el envió de correos, por medio del uso de dos ficheros.

1.carta.txt:
Estimado/a H #CLIENTE#
Tenemos noticias de que usted don/doña H #CLIENTE# no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.

2.cliente.txt:
alguncorreo@gmail.com nombre apellido
alguncorreo@gmail.com nombre apellido

La idea es sustituir #CLIENTE# por el nombre y apellido del cliente, que es lo que ya he logrado hasta el momento y sustituir H(hombre) si esta presente o M(mujer) por su correspondiente identificativo Estimado/a y don/doña esta es la parte que aun no he podido hacer si me pudieran dar alguna idea de como optimizar y como finalizar este ejercicio se los agradeceria


Gracias por responder al final lo solucione usando expresiones regulares puede que no sea muy
eficiente pero lo logre hacer  ;D.
Este es el código

Código
  1. def envio_correo_personalizado():
  2.    try:
  3.  
  4.        # variables y apertura de ficheros
  5.        nombre = []
  6.        mensaje = ""
  7.        carta = open("carta.txt", "r")
  8.        carta_copia = open("carta.txt.copia", "w")
  9.        cliente = open("cliente.txt", "r")
  10.  
  11.        # lectura de clientes
  12.        for _cliente in cliente:
  13.            nombre += _cliente.rstrip().split("/")
  14.  
  15.        # Leyendo el fichero carta
  16.        linea = carta.readline()
  17.        while linea != "":
  18.            mensaje += linea
  19.            linea = carta.readline()
  20.  
  21.        # TODO Cambiando los valores del mensaje segun el genero usando expresiones regulares.
  22.        # FIXME Buscar otra forma de hacerlo.
  23.        mensaje = re.sub(
  24.            r"/a|/doña|H", "", mensaje) if "H" in mensaje else re.sub(r"o/|don/|M", "", mensaje)
  25.        mensaje = re.sub(r"#CLIENTE#", nombre[1], mensaje)
  26.        print("Mensaje cambiado")
  27.        print(mensaje)
  28.  
  29.        for i in mensaje:
  30.            carta_copia.write(i)
  31.  
  32.        # cierre de ficheros
  33.        carta.close()
  34.        cliente.close()
  35.        carta_copia.close()
  36.  
  37.    except IOError:
  38.        print("Fichero no existe")
  39.  
  40.  


« Última modificación: 8 Marzo 2020, 16:12 pm por reconFito » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.065



Ver Perfil
Re: [Python3] Ayuda con manipulacion de ficheros
« Respuesta #1 en: 17 Febrero 2020, 17:28 pm »

Saludos,

- De momento me está funcionando lo siguiente:

carta.txt
Código:
#ESTIMAD@# #CLIENTE#
Tenemos noticias de que usted #DON@# #CLIENTE# no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.

clientes.txt
Código:
carlos_aguero@gmail.com  ; Carlos Alberto ; Agüero López  ; H
camila_valerio@gmail.com ; Camila         ; Valerio Gómez ; M

Código
  1. clientes = open("clientes.txt", "r")
  2.  
  3. for cliente in clientes :
  4.  datos = cliente.split(";")
  5.  correo = datos[0].strip()
  6.  nombres = datos[1].strip()
  7.  apellidos = datos[2].strip()
  8.  sexo = datos[3].strip()
  9.  
  10.  carta = open("carta.txt", "r")
  11.  correo_cliente = open(correo + ".txt", "w")
  12.  for linea in carta :
  13.    tmp = linea
  14.    if "#ESTIMAD@#" in linea :
  15.      if sexo == "H" :
  16.        tmp = tmp.replace("#ESTIMAD@#", "Estimado")
  17.      elif sexo == "M" :
  18.        tmp = tmp.replace("#ESTIMAD@#", "Estimada")
  19.    if "#DON@#" in linea :
  20.      if sexo == "H" :
  21.        tmp = tmp.replace("#DON@#", "don")
  22.      elif sexo == "M" :
  23.        tmp = tmp.replace("#DON@#", "doña")
  24.    if "#CLIENTE#" in linea :
  25.      tmp = tmp.replace("#CLIENTE#", nombres + " " + apellidos)
  26.    correo_cliente.write(tmp)
  27.  carta.close()
  28.  correo_cliente.close()
  29. clientes.close()
  30.  

- He tenido algunos problemas con la ñ XD, pero viendo como lee dicha ñ el propio python y poniéndola así he visto que no tiene problemas, este mismo método lo usa en Batch, debe haber otros métodos que más tarde revisaré...

Resultados:

carlos_aguero@gmail.com.txt
Código:
Estimado Carlos Alberto Agüero López
Tenemos noticias de que usted don Carlos Alberto Agüero López no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.

camila_valerio@gmail.com.txt
Código:
Estimada Camila Valerio Gómez
Tenemos noticias de que usted doña Camila Valerio Gómez no a abonado el importe
de la cuota mensual a que le obliga el draconiano contrato que firmó.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA! manipulación de arhivo.
Programación C/C++
cv0023 2 1,607 Último mensaje 3 Noviembre 2015, 20:22 pm
por cv0023
Problema con Manipulacion de Ficheros, ¿Cual es el error en mi codigo?
Programación C/C++
omarigg 2 2,292 Último mensaje 10 Noviembre 2015, 17:23 pm
por user-marcos
[Python3 + tkinter] Ayuda con combobox dependiente
Scripting
darkweb64 0 2,384 Último mensaje 8 Febrero 2017, 20:37 pm
por darkweb64
[Python3] Ayuda contar numeros en string
Scripting
reconFito 6 3,271 Último mensaje 31 Diciembre 2019, 16:29 pm
por tincopasan
[Python3-Flask] Ayuda
Scripting
reconFito 1 2,034 Último mensaje 2 Febrero 2020, 10:16 am
por calcena
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines