def __init__(self, args): self.fs = FileSystem() get_logger('app', 'logs/app.log', level=logging.DEBUG) self.storage_dir = args.storage_option logging.getLogger('app').debug('App started') self.fs.apply_callback_to_file_iterator(self.storage_dir, self.indexer) logging.getLogger('app').debug('App stoped normaly')
class PhotoIndexer: def __init__(self, args): self.fs = FileSystem() get_logger('app', 'logs/app.log', level=logging.DEBUG) self.storage_dir = args.storage_option logging.getLogger('app').debug('App started') self.fs.apply_callback_to_file_iterator(self.storage_dir, self.indexer) logging.getLogger('app').debug('App stoped normaly') def indexer(self, filename): self.fs.check_md5(filename)
def __init__(self, myPortNumber, orangeIP, orangePortNumber): ''' Constructor de objetos de clase GreenNode. Recibe como parametros el numero de puerto del nodo por construir, y la IP y puerto del nodo naranja que usa para conectarse. Incluye la etapa de inicialización del nodo verde. ''' # Inicializar servicios basicos self.myPort = myPortNumber self.myID = -1 self.orangeIP = orangeIP self.orangePort = orangePortNumber self.tcpl = TCPL() self.tcpl.startService(self.myPort) self.processSystem = ProcessSystem(self.myPort, True) # Diccionario con GreenNodeToken self.neighboursTable = dict() # Registros en tabla: nodoDestino [0] | distancia [1] | vecino [2] self.routingTable = dict() self.fileSystem = FileSystem(self.myPort) self.assemblePackage = AssemblePackageFactory()
def __init__(self, args): self.fs = FileSystem() get_logger('app', 'logs/app.log', level=logging.DEBUG) get_logger('images', 'logs/images.log') get_logger('videos', 'logs/videos.log') get_logger('other', 'logs/other.log') self.scan_dir = args.scan_option self.storage_dir = args.storage_option logging.getLogger('app').debug('App started') self.fs.apply_callback_to_file_iterator(self.scan_dir, self.sorter) logging.getLogger('app').debug('App stoped normaly')
class PhotoSorter: FILE_FORMAT = '%H-%M-%S_%Y-%m-%d' DIR_FORMAT = '/%Y/%m-%Y/%d-%m-%Y' VIDEO_EXTENSIONS = [ '.avi', '.thm', '.mp4', '.mov', '.3gp', '.mpg', ] def __init__(self, args): self.fs = FileSystem() get_logger('app', 'logs/app.log', level=logging.DEBUG) get_logger('images', 'logs/images.log') get_logger('videos', 'logs/videos.log') get_logger('other', 'logs/other.log') self.scan_dir = args.scan_option self.storage_dir = args.storage_option logging.getLogger('app').debug('App started') self.fs.apply_callback_to_file_iterator(self.scan_dir, self.sorter) logging.getLogger('app').debug('App stoped normaly') def read_image_date(self, image_type, filename): if image_type in ('gif', 'png'): date_time = self.read_file_date(filename) elif image_type == 'jpeg': date_time = self.read_exif_date(filename) else: raise PhotoSorterException('Unknown image type') return date_time def read_file_date(self, filename): return datetime.fromtimestamp(self.fs.get_mktime(filename)) def read_exif_date(self, filename): file = open(filename, 'rb') r = re.compile(b'\d{4}[:]\d{2}[:]\d{2}\s\d{2}[:]\d{2}[:]\d{2}', re.M) matches = r.search(file.read()) if matches is None: datetime_original = self.read_file_date(filename) else: datetime_original = datetime.strptime(matches.group(0).decode("utf-8"), '%Y:%m:%d %H:%M:%S') return datetime_original def progress_image(self, filename, date_time, image_type): dirname = self.storage_dir + date_time.strftime(self.DIR_FORMAT) self.fs.ensure_dir_exists(dirname) md5 = self.fs.md5_file(filename) newfilename = dirname + '/' + date_time.strftime(self.FILE_FORMAT) + '.' + md5 + '.' + ( 'jpg' if image_type == 'jpeg' else image_type).upper() if not self.fs.isfile(newfilename): self.fs.copy(filename, newfilename) logging.getLogger('images').info(md5 + ' ' + filename + ' => ' + newfilename) else: logging.getLogger('app').debug('Skip: ' + filename) return def sorter(self, filename): image_type = imghdr.what(filename) if image_type: self.progress_image(filename, self.read_image_date(image_type, filename), image_type) elif self.fs.splitext(filename)[-1].lower() in self.VIDEO_EXTENSIONS: logging.getLogger('videos').info(self.read_file_date(filename).strftime(self.FILE_FORMAT) + ' ' + filename) else: logging.getLogger('other').info(filename)
class PhotoSorter: FILE_FORMAT = '%H-%M-%S_%Y-%m-%d' DIR_FORMAT = '/%Y/%m-%Y/%d-%m-%Y' VIDEO_EXTENSIONS = [ '.avi', '.thm', '.mp4', '.mov', '.3gp', '.mpg', ] def __init__(self, args): self.fs = FileSystem() get_logger('app', 'logs/app.log', level=logging.DEBUG) get_logger('images', 'logs/images.log') get_logger('videos', 'logs/videos.log') get_logger('other', 'logs/other.log') self.scan_dir = args.scan_option self.storage_dir = args.storage_option logging.getLogger('app').debug('App started') self.fs.apply_callback_to_file_iterator(self.scan_dir, self.sorter) logging.getLogger('app').debug('App stoped normaly') def read_image_date(self, image_type, filename): if image_type in ('gif', 'png'): date_time = self.read_file_date(filename) elif image_type == 'jpeg': date_time = self.read_exif_date(filename) else: raise PhotoSorterException('Unknown image type') return date_time def read_file_date(self, filename): return datetime.fromtimestamp(self.fs.get_mktime(filename)) def read_exif_date(self, filename): file = open(filename, 'rb') r = re.compile(b'\d{4}[:]\d{2}[:]\d{2}\s\d{2}[:]\d{2}[:]\d{2}', re.M) matches = r.search(file.read()) if matches is None: datetime_original = self.read_file_date(filename) else: datetime_original = datetime.strptime( matches.group(0).decode("utf-8"), '%Y:%m:%d %H:%M:%S') return datetime_original def progress_image(self, filename, date_time, image_type): dirname = self.storage_dir + date_time.strftime(self.DIR_FORMAT) self.fs.ensure_dir_exists(dirname) md5 = self.fs.md5_file(filename) newfilename = dirname + '/' + date_time.strftime( self.FILE_FORMAT) + '.' + md5 + '.' + ( 'jpg' if image_type == 'jpeg' else image_type).upper() if not self.fs.isfile(newfilename): self.fs.copy(filename, newfilename) logging.getLogger('images').info(md5 + ' ' + filename + ' => ' + newfilename) else: logging.getLogger('app').debug('Skip: ' + filename) return def sorter(self, filename): image_type = imghdr.what(filename) if image_type: self.progress_image(filename, self.read_image_date(image_type, filename), image_type) elif self.fs.splitext(filename)[-1].lower() in self.VIDEO_EXTENSIONS: logging.getLogger('videos').info( self.read_file_date(filename).strftime(self.FILE_FORMAT) + ' ' + filename) else: logging.getLogger('other').info(filename)
def testFileSystem(): fs1 = FileSystem(11) fs2 = FileSystem(13) fileA = [bytearray("Hola, mundo. ", 'utf-8'), bytearray("Soy una prueba. ", 'utf-8'), bytearray("Adiós, mundo.", 'utf-8')] fileB = bytearray("Sabías que a los dioses de la muerte les gustan las manzanas?", 'utf-8') fileC = bytearray("Tendría que analizarlo", 'utf-8') fileD = [bytearray(3), bytearray(2), bytearray(1)] fs1.storeFile("B", fileB) fs1.storeFile("C", fileC) i = 0 for fragment in fileA: fs1.storeFragment("A", i, fragment) i += 1 i = 0 for fragment in fileD: fs1.storeFragment("D", i, fragment) i += 1 fs2.storeFile("B", fileB) i = 0 for fragment in fileA: fs2.storeFragment("A", i, fragment) i += 1 assert fs1.findFile("A") == False, "A must not be found in filesystem 1." assert fs1.findFragment("A") == True, "A's pieces must be found in filesystem 1." assert fs1.findFile("B") == True, "B must be found in filesystem 1." assert fs1.findFragment("B") == False, "B's pieces must not be found in filesystem 1." assert fs1.findFile("C") == True, "C must be found in filesystem 1." assert fs1.findFragment("C") == False, "C's pieces must not be found in filesystem 1." assert fs1.findFile("D") == False, "D must not be found in filesystem 1." assert fs1.findFragment("D") == True, "D's pieces must be found in filesystem 1." assert fs2.findFragment("A") == True, "A's pieces must be found in filesystem 2." assert fs2.findFile("B") == True, "B must be found in filesystem 2." assert fs2.findFile("C") == False, "C must not be found in filesystem 2." assert fs2.findFragment("D") == False, "D's pieces must not be found in filesystem 2." aRecoveredFrom2 = fs2.loadFragments("A") bRecoveredFrom2 = fs2.loadFile("B") fs2.deleteFragment("A") fs2.deleteFile("B") assert fs2.findFragment("A") == False, "A's pieces must not be found in filesystem 2." assert fs2.findFile("B") == False, "B must not be found in filesystem 2." del fs2 aRecoveredFrom1 = fs1.loadFragments("A") bRecoveredFrom1 = fs1.loadFile("B") cRecoveredFrom1 = fs1.loadFile("C") dRecoveredFrom1 = fs1.loadFragments("D") fs1.deleteFragment("A") fs1.deleteFile("B") assert fs1.findFragment("A") == False, "A's pieces must not be found in filesystem 1." assert fs1.findFile("B") == False, "B must not be found in filesystem 1." assert fs1.findFile("C") == True, "C must be found in filesystem 1." assert fs1.findFragment("D") == True, "D's pieces must be found in filesystem 1." assert len(aRecoveredFrom2) == 3, "Filesystem 2 must have all 3 pieces of A." assert aRecoveredFrom2[0] == fileA[0], "First piece of A has changed in filesystem 2." assert aRecoveredFrom2[1] == fileA[1], "Second piece of A has changed in filesystem 2." assert aRecoveredFrom2[2] == fileA[2], "Third piece of A has changed in filesystem 2." assert bRecoveredFrom2 == fileB, "B changed in filesystem 2." assert len(aRecoveredFrom1) == 3, "Filesystem 1 must have all 3 pieces of A." assert aRecoveredFrom1[0] == fileA[0], "First piece of A has changed in filesystem 1." assert aRecoveredFrom1[1] == fileA[1], "Second piece of A has changed in filesystem 1." assert aRecoveredFrom1[2] == fileA[2], "Third piece of A has changed in filesystem 1." assert bRecoveredFrom1 == fileB, "B changed in filesystem 1." assert cRecoveredFrom1 == fileC, "C changed in filesystem 1." assert len(dRecoveredFrom1) == 3, "Filesystem 1 must have all 3 pieces of D." assert dRecoveredFrom1[0] == fileD[0], "First piece of D has changed in filesystem 1." assert dRecoveredFrom1[1] == fileD[1], "Second piece of D has changed in filesystem 1." assert dRecoveredFrom1[2] == fileD[2], "Third piece of D has changed in filesystem 1."
def readJobs(disk, cpu): jobs = [] with open(sys.argv[3], "r") as file: n_segments = 0 ios = [] # Lista de Jobs ordenada pelo tempo de início for line in file: segment_tree = Tree() line = line.split("\n")[0] items = line.split(" ") n_io = int(items[2]) n_segments = int(items[5]) # Organiza segmentos do job for i in range(0, n_segments): line = next(file) line = line.split("\n")[0] items_segment = line.split(" ") if len(items_segment) == 2: segment_tree.add_node(int(items_segment[0]), items_segment[1]) else: segment_tree.add_node(int(items_segment[0]), items_segment[1], int(items_segment[2])) job = Job(items[0], items[1], None, items[3], items[4], segment_tree) # Organiza IOs for i in range(0, n_io): line = next(file) line = line.split("\n")[0] items_io = line.split(" ") io_name = items_io[0] if io_name == DeviceType.Printer: ios.append( Device( DeviceType.Printer, int( random.normal(cpu.TIMESLICE / 2, cpu.TIMESLICE / 10)))) elif io_name == DeviceType.Reader: ios.append( Device( DeviceType.Reader, int( random.normal(cpu.TIMESLICE / 2, cpu.TIMESLICE / 10)))) elif io_name == DeviceType.Disk: filename = items_io[1] if items_io[2] == "r": read_write = DiskOperation.Read else: read_write = DiskOperation.Write n_opers = int(items_io[3]) size = int(items_io[4]) is_private = items_io[5] sys_file = FileSystem(filename, job, size, is_private) time = int( random.normal(cpu.TIMESLICE / 2, cpu.TIMESLICE / 10)) ios.append( Device(DeviceType.Disk, time, sys_file, read_write, n_opers)) disk.addFile(sys_file) job.ios = ios # Coloca o job no segmento para facilitar impressao da memoria for i in range(0, segment_tree.size): segment_tree.__getitem__(i).job = job jobs.append(job) ios = [] printJobs(jobs) return jobs
def renameAndMoveFile(self, filename): fileSystem = FileSystem(self.name) fileSystem.renameAndMoveFile(filename)
def createMonthFolder(self): fileSystem = FileSystem(self.name) fileSystem.createMonthFolder()