def to_external(self, path): """Возвращает первоначальный путь файла. Позиционные аргументы: path -- исходный путь Папка с корзином считается корнем. Протокол дешефруется из последовательности кодов символов. """ trash_dir = utils.get_absolute_path(self.directory) full_path = utils.get_absolute_path(path) if os.path.commonprefix((full_path, trash_dir)) != trash_dir: error_fmt = "{path} is'n trash area({trash_dir})." error_msg = error_fmt.format(path=path, trash_dir=trash_dir) raise ValueError(error_msg) rel_path = os.path.relpath(full_path, trash_dir) splitted_path = utils.split_path(rel_path)[1:] protocol_code = splitted_path[0] protocol = ''.join(chr(int(s)) for s in protocol_code.split(' ')) splitted_path[0] = protocol ext_path = os.path.join(*splitted_path) return ext_path
def to_internal(self, path): """Возвращает путь файла, переподвешанного к корзине. Позиционные аргументы: path -- исходный путь Определяется как путь к файлу, подвешанный к папке с корзиной. Протокол шифруется как последовательность кодов символов. """ trash_dir = utils.get_absolute_path(self.directory) path_full = utils.get_absolute_path(path) splitted_path = utils.split_path(path_full) protocol = splitted_path[0] protocol_code = ' '.join([str(ord(char)) for char in protocol]) splitted_path[0] = protocol_code int_path = os.path.join(trash_dir, *splitted_path) return int_path
def test_2(self): result = utils.split_path("./a/b.txt") ans = ["", ".", "a", "b.txt"] self.assertEqual(result, ans)