def processFile(manager, archiveDir, filePath): size = os.path.getsize(filePath) md5 = file_utils.getMd5(filePath) shouldArchive = True records = manager.queryBySize(size) if len(records) != 0: # 已归档目录中包含大小相同的文件,进一步判断是否同一文件 for record in records: # 判断数据库中的记录是否有效,归档文件是否未被删除等 recorePath = f'{archiveDir}/{record.path}' fileExists = os.path.exists(recorePath) if fileExists: fileSize = os.path.getsize(recorePath) else: fileSize = -1 if fileExists and fileSize == record.size: # 记录有效, 根据 md5 判断是否同一文件 if md5 == record.md5: shouldArchive = False log.log( f'{filePath} is already archived, size={size}, md5={md5}' ) break else: # 记录无效,删除数据库记录 log.failure(f'delete invalid record, path={recorePath}') manager.deleteRecord(record) if shouldArchive: doArchive(manager, archiveDir, filePath, size, md5)
def main(): config = Config.loadConfig('config.ini') ensureArchiveDir(config.archiveDir) manager = DatabaseManager.createManager(config.archiveDir) manager.connectDB() for dirpath, dirnames, filenames in os.walk(config.inputDir): for filename in filenames: try: filePath = os.path.join(dirpath, filename) extension = os.path.splitext(filePath)[1].strip().strip('.') if len(extension) == 0: log.warning(f'skip unknown file: {filePath}') elif file_utils.isImage(extension) or file_utils.isVideo( extension): processFile(manager, config.archiveDir, filePath) else: log.warning(f'skip unsupported file: {filePath}') except Exception as e: log.failure(f'Unexpected error: {e}') manager.closeDB()
def eventBattle(player): print("Woaw ! An ennemy ship is here. Get ready for battle !") # generate ennemy ship ennemy = character.Character(5 * player._level, 1 * player._level, 5 * player._level, 0, 0, 10, 0, 1, "ennemy") # Fight ! turn = 0 while ennemy._life != 0 and player._life != 0: order = input("What do you want to do ? [fight - escape - status] \n >>>") if order == "fight": if turn % 2 == 0: # player's turn ennemy.getDamages(player.dealtDamages()) else: player.getDamages(ennemy.dealtDamages()) elif order == "escape": rand_event = random.randint(1, 3) if rand_event == 2: log.success("Escaping suceeded !") return True else: log.failure("failed escape") player.getDamages(ennemy.dealtDamages()) elif order == "status": player.status() ennemy.status() turn = turn + 1 if ennemy._life == 0 and player._life != 0: log.success("You defeated the ennemy !") player.earnXP(10) player.earnCredits(10) player.levelUp() return True elif player._life == 0 and ennemy._life != 0: log.failure("You've been defeated !") return False else: log.debug("Should not happen") return False
player = character.Character() menu.menu(player) random.seed(); # random event order = "go" success = True # DAEMON os.system('cls') utils.printFile("text/intro") while player._life > 0 and order!="quit": order = input("What do you want to do ? [move - repare - status - save - load - quit]\n >>> ") if order == "move": if player.isEnergyEmpty(): log.failure("You have no more energy. You will die alone, drifting in space") event.gameOver() break; else: player._energy = player._energy-1 rand_event = random.randint(1,3) if rand_event == 1: success = event.eventNothing() elif rand_event == 2: success = event.eventBattle(player) else: success = event.eventSpaceStation(player) elif order == "repare": choice = input("How much energy to you want to consumme for charging shield ? \n >>> ") if utils.isInt(choice): if player._energy - int(choice) >= 0:
def gameOver(): log.failure("It's game over, man ! Game Over !")