Publicidad

viernes, 9 de mayo de 2008

Programas sencillos

Aquí les dejo estos sencillos scripts de python, copienlos y peguenlos en un archivo desde el bloc de notas y guardenlos con la extensión .py v.gr. "nombre.py", obviamente deberán editar algunas cosas.

Crear y leer ficheros ZIP.

'''Programa de pruebas para el manejo del modulo zipfile.'''
__shell_usage__ = '''\nAyuda:
Este programa crea un fichero zip con todos los ficheros de un directorio.
Dicho fichero zip se guarda en el mismo directorio.
Uso: pruebaszip [-c] [-l] [--help]
-c: crea un zip
-l: lista los ficheros de un fichero zip y muestra informacion
--help: muestra esta pantalla de ayuda
'''
__author__ = 'Arturo Suelves Albert: arturosa@lycos.es'
__version__ = 'Pruebas de ZIP - 20/04/2001'
import zipfile
import os.path
import os,sys
def hacer_zip(ficherozip,directorio_ficheros_a_zipear):
lista_de_ficheros_a_zipear=os.listdir(directorio_ficheros_a_zipear)
a=zipfile.ZipFile(ficherozip,'w',8)
for i in lista_de_ficheros_a_zipear:
if os.path.isfile(str(directorio_ficheros_a_zipear)+'\\'+str(i)):
a.write(str(directorio_ficheros_a_zipear)+'\\'+str(i))
print'.',
a.close()
def leer_zip(ficherozip):
a=zipfile.ZipFile(ficherozip,'r')
#print 'Lista de ficheros incluidos en el zip: ',a.namelist(),'\n'
#fichero_a_ver=raw_input('Fichero a visualizar: ')
print a.read(fichero_a_ver)
for contador in a.namelist():
print a.read(contador) #esta linea imprime el contenido del fichero
print '\nNombre del fichero: '+contador
print 'Ultima modificacion del fichero: '+str(a.getinfo(contador).date_time)
print 'Sistema que creo el fichero: '+str(a.getinfo(contador).create_system)
print 'Tamaño comprimido: '+str(a.getinfo(contador).compress_size)
print 'Tamaño descomprimido: '+str(a.getinfo(contador).file_size)
print 'Tipo de compresion: '+str(a.getinfo(contador).compress_type)+'\n'
tecla=raw_input('Pulse ENTER para ver el siguiente documento en el fichero zip.')
a.close()


if __name__ == '__main__':
if len(sys.argv) == 2:
if sys.argv[1] == '-c':
directorio_trabajo=raw_input('\nDirectorio con los ficheros a zipear:')
os.chdir(directorio_trabajo)
nombre_zip=raw_input('\nNombre del fichero ZIP: ')
if os.path.isfile(nombre_zip):
print '\nYa existe un fichero en el directorio con este nombre: '+nombre_zip
sys.exit()
else:
hacer_zip(nombre_zip,directorio_trabajo)
else:
if sys.argv[1] == '-l':
nombre_zip=raw_input('\nPath completo del fichero ZIP: ')
leer_zip(nombre_zip)
else:
print '\nNombre del programa:',sys.argv[0]
print __shell_usage__
print __author__
else:
print '\nNombre del programa:',sys.argv[0]
print __shell_usage__
print __author__
sys.exit()



Enviar mensajes a una lista de direcciones de correo.

'''Programa para enviar un mensaje a una lista de direcciones de e-mail.'''
__shell_usage__ = '''Este programa envia un mensaje a una lista de direcciones de e-mail.
El fichero de direcciones debe de tener una direccion de e-mail por linea.
El fichero con el cuerpo del mensaje debe de estar en formato texto.
El puerto de SMTP es el 25.'''
__version__ = 'Ejemplo de uso del modulo smtplib (protocolo SMTP)'
__author__='Arturo Suelves (arturosa@lycos.es)'
import smtplib
import sys,os
def enviar_mensajes_a_lista_de_correo(mail_enviador,asunto,servidorsmtp,puertosmtp):
fichero_con_lista_direcciones=raw_input('Introducir path completo del fichero de direcciones: ')
fichero_con_cuerpo_mensaje=raw_input('Introducir path completo del fichero con el cuerpo del mensaje: ')
fichero_con_mensajes_enviados=raw_input('Introducir path completo para fichero log de mensajes enviados: ')
fld=open(fichero_con_lista_direcciones,'r')
fme=open(fichero_con_mensajes_enviados,'w')
for i in fld.readlines():
try:
mensaje = "From: "+mail_enviador+"\nSubject: "+asunto+"\nTo: "+i+"\n"
fcm=open(fichero_con_cuerpo_mensaje,'r')
print '\nMensaje para: '+i
for ii in fcm.readlines():
mensaje=mensaje+ii
fcm.close()
print 'Abierto fichero del cuerpo del mensaje...\n'
server = smtplib.SMTP(servidorsmtp,int(puertosmtp))
print '\nImprimiendo la informacion de debug de la conexion con el servidor SMTP.\n'
server.set_debuglevel(1)
#Esta linea sirve para imprimir informacion de debuger sobre el proceso de enviar los mensajes
server.sendmail(mail_enviador, i, mensaje)
fme.write('Mensaje enviado a:'+i)
print 'Mensaje enviado a: '+i
server.quit()
except:
print 'Error enviando el fichero a: '+ i
fme.write('Error enviado el fichero a: '+i)
fld.close()
fme.close()
if __name__ == '__main__' :
print '''Uso:
Este programa envia un mensaje a una lista de direcciones de e-mail.
El fichero de direcciones debe de tener una direccion de e-mail por linea.
El fichero con el cuerpo del mensaje debe de estar en formato texto.
El puerto de SMTP estandard es el 25.
'''
enviador_mensaje=raw_input('Introducir e-mail del enviador: ')
asunto_mensaje=raw_input('Introducir asunto del mensaje: ')
servidorsmtp_mensaje=raw_input('Introducir servidor de SMTP: ')
puertosmtp_mensaje=raw_input('Introducir puerto del SMTP : ')
enviar_mensajes_a_lista_de_correo(enviador_mensaje,asunto_mensaje,servidorsmtp_mensaje,puertosmtp_mensaje)
print 'Programa finalizado.\n'
sys.exit()


Expresiones regulares.Convertir de MAYUSCULAS a minusculas

#!/usr/bin/env python
'''Ejemplo del uso de expresiones regulares en Python.'''
__shell_usage__ = ''' Este es un programa de ejemplo. Busca en fichero HTML dado
como argumento, todas las marcas de html y las pone en minusculas y saca el
resultado por pantalla.'''
__version__ = 'Ejemplo de uso de expresiones regulares'
__author__='Arturo Suelves (arturosa@lycos.es)'
import os,sys
import string,re
def Mm(fentrada):
flectura=open(fentrada,'r')
f=flectura.read()
flectura.close()
coincidencias1=re.findall("[\n][^<]*[>]",f)
#Busca todas las marcas html desde el principio de la linea nueva al final
coincidencias2=re.findall("[<][^>]*[\n]",f)+
#Busca todas las marcas html desde el principio de la linea al final de la linea
coincidencias3=re.findall("[<].*[>]",f)
#Busca todas las marcas html que van en una linea
resultado=f
for i in coincidencias1:
busca=re.search(i,resultado)
if busca:
p1=busca.start()
p2=busca.end()
resultado1=resultado[:p1]
resultado2=resultado[p2:]
anadido=string.lower(f[p1:p2])
resultado=resultado1+anadido+resultado2
for i in coincidencias2:
busca=re.search(i,resultado)
if busca:
p1=busca.start()
p2=busca.end()
resultado1=resultado[:p1]
resultado2=resultado[p2:]
anadido=string.lower(f[p1:p2])
resultado=resultado1+anadido+resultado2
for i in coincidencias3:
busca=re.search(i,resultado)
if busca:
p1=busca.start()
p2=busca.end()
resultado1=resultado[:p1]
resultado2=resultado[p2:]
anadido=string.lower(f[p1:p2])
resultado=resultado1+anadido+resultado2
return resultado
if __name__ == '__main__':
if len(sys.argv) == 2:
if sys.argv[1] <> '':
print Mm(sys.argv[1])

No hay comentarios: