Advertisement
Guest User

Untitled

a guest
Nov 25th, 2017
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.95 KB | None | 0 0
  1. import os
  2.  
  3. from threading import Timer
  4.  
  5. from os.path import isfile, join, exists
  6.  
  7. import shutil, time
  8.  
  9. import logging
  10. logging.basicConfig(filename='C:\Users\BetaBrawler\Downloads\Informe\Informe.txt', level=logging.DEBUG,
  11.                     format='%(asctime)s:%(levelname)s:%(message)s')
  12.  
  13.  
  14.  
  15. PATH_TO_WATCH = "C:\Users\BetaBrawler\Downloads"
  16.  
  17.  
  18.  
  19. class FileReader:
  20.  
  21.     def __init__(self, path = None):
  22.        
  23.         self.path = path
  24.        
  25.         self.running = False
  26.        
  27.         self.timer = None
  28.  
  29.     def printFilesData(self, files):
  30.        
  31.         if self.path:
  32.            
  33.             timestamp = time.strftime("%d-%m-%Y-%H-%M-%S")
  34.        
  35.             destination = join(self.path, timestamp)
  36.  
  37.             for index, file in enumerate(files):
  38.  
  39.                 if isfile(join(self.path, file)):
  40.  
  41.                     self.readAndMoveFile({"dest": destination, "name": file, "data": open(join(self.path, file))})
  42.  
  43.     def readAndMoveFile(self, fileData):
  44.        
  45.         logging.debug("Archivo:%s%s" % (fileData["name"], fileData["data"].read()))
  46.        
  47.         #El archivo debe ser cerrado para que se mueve
  48.         fileData["data"].close()
  49.        
  50.         if not exists(fileData["dest"]):
  51.            
  52.             os.makedirs(fileData["dest"])
  53.            
  54.         try:
  55.            
  56.             shutil.move(join(self.path, fileData["name"]), fileData["dest"])
  57.            
  58.             logging.debug("Archivo \"%s\" movido  \"%s\" ." % (fileData["name"], fileData["dest"]))
  59.            
  60.         except WindowsError as e:
  61.            
  62.             logging.warning(e)
  63.  
  64.     def listFiles(self):
  65.        
  66.         if self.path:
  67.            
  68.             return [file for file in os.listdir(self.path)]
  69.        
  70.         return None
  71.  
  72.     def stopWatching(self):
  73.        
  74.         logging.warning("Not watching.")
  75.        
  76.         self.timer.cancel()
  77.  
  78.     def complete(self):
  79.        
  80.         after = self.listFiles()
  81.        
  82.         added = [file for file in after if not file in self.lock]
  83.        
  84.         self.printFilesData(added)
  85.        
  86.         self.lock = after
  87.        
  88.         self.timer = Timer(5.0, self.complete)
  89.        
  90.         self.timer.start()
  91.  
  92.     def startWatching(self):
  93.        
  94.         if(self.path):
  95.            
  96.             self.lock = self.listFiles()
  97.            
  98.             logging.debug("Directorio que se esta observando %s..." % self.path)
  99.            
  100.             self.printFilesData(self.lock)
  101.            
  102.             self.timer = Timer(5.0, self.complete)
  103.            
  104.             self.timer.start()
  105.  
  106.         else: logging.warning("Ruta sin definir.")
  107.  
  108. class Main():
  109.  
  110.     def __init__(self):
  111.        
  112.         self.reader = FileReader("C:\Users\BetaBrawler\Downloads")
  113.        
  114.         self.reader.startWatching()
  115.  
  116.  
  117. if __name__ == '__main__':
  118.    
  119.     Main()
  120.    
  121.     #Debug: Seguimiento mas acusioso
  122.     #Info: Informacion
  123.     #Warning
  124.     #Critical
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement