miércoles, noviembre 11, 2009

Observar (Watch) un directorio con python

Sobre python y directorios

Pues una de las actividades de mi trabajo (aparte de estar alerta al foco rojo), es transferir archivos de un sitio a otro y dentro del otro a otro, ¿que interesante no? Pues para hacerlo más interesante se me ocurrió automatizar todo el proceso.

Lo que hago es observar un directorio por si hay cambios (actualizaciones, borrados, nuevos archivos), si los hay los envio al servidor, en este primer ambiente tengo python instalado asi que encontré un codigo y le realice algunos cambios. Fueron pequeños cambios solo para notar los archivos que fueron modificados recientemente.

import os, glob, time
from os.path import join, getsize, basename

path_to_watch = r'D:\Documentos\bi\test'

before = dict ([(f, os.stat(join(path_to_watch,f)).st_mtime) for f in os.listdir (path_to_watch)])
while 1:
  time.sleep (60)
  after = dict ([(f, os.stat(join(path_to_watch,f)).st_mtime) for f in os.listdir (path_to_watch)])
  added = [f for f in after if not f in before]
  removed = [f for f in before if not f in after]
  different = dict ([(f, None) for f in before if before.get(f) - after.get(f) != 0 ])
  if added: print "Added: ", ", ".join (added)
  if removed: print "Removed: ", ", ".join (removed)
  if different: print "Changed: ", ", ".join(different)
  before = after

Como me impresiona la simpleza del código python, la forma en que uno lo lee es muy interesante.

Ahora en el otro ambiente no tenia python, asi que pues ha googlear un poco y nos encontramos con py2exe, y en el ambiente hostil pues ya esta funcionando a la perfección y sin haber instalado python allí


Sobre el trabajo en oficina

A veces me pregunto para que voy a la oficina, todo lo que hago lo puedo realizar desde mi depto, algunos sostienen que por las relaciones laborales, otros que pues uno se aburriría, pero al menos en mi caso y viviendo a 15 min de mi trabajo, pudiera ir a comer con los compañeros unas cuantas veces a la semana, ahí si entraría al equipo de fútbol, tengo que ir a fuerza a mis clases de ingles 3 veces a la semana, en fin. 

Aparte de que por alguna extraña razón me incomoda estar allí, digo, pareciera que no trabajo, pero en realidad el trabajo de un sysadmin no requiere 100% de atención, uno acaba sus monitoreos, realiza su documentación, se testean mejoras a los appliances y hasta ahí. En cambio, un programador pues tiene que estar tirando lineas o investigando como tirarlas, alguien de operación tiene que ver que el flujo del negocio valla bien, arreglar reclamaciones, en fin, es un tipo diferente de trabajo.



No hay comentarios.: