Метод Python | os.path.realpath()

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Модуль ОС Python предоставляет функции для взаимодействия с операционной системой. ОС поставляется со стандартными сервисными модулями Python. Этот модуль предоставляет портативный способ использования определенных функций операционной системы. Модуль os.path — это подмодуль модуля ОС Python, который используется для управления общими путями. os.path.realpath () в Python используется для получения канонического пути указанного имени файла путем удаление любых символических ссылок, встречающихся на пути.
Синтаксис: os.path.realpath(path) Параметр: path: Путь-подобный объект, представляющий путь к файловой системе. Объект, подобный пути, представляет собой либо строку, либо байтовый объект, представляющий путь. Тип возвращаемого значения: этот метод возвращает строковое значение, представляющее канонический путь. 

Создать программную или символическую ссылку

В Unix или Linux программную или символическую ссылку можно создать с помощью команды ln. Ниже приведен синтаксис для создания символической ссылки в командной строке:
$ ln -s {исходный-файл} {символический-файл} 

Пример 1

def realpath(self, spec, key): """ Разрешить и обновить ключ пути в спецификации с помощью его реальный путь на основе рабочего каталога. """ если ключ не указан в спецификации: # ничего не делать для теперь вернуть, если не спец[ключ]: logger.warning( "не удается разрешить realpath из `%s ` так как он не определен", ключ) return check = realpath(join(spec.get( WORKING_DIR, ``), спец[ключ])) если проверить != спец[ключ]: спец[ключ] = проверить logger.warning( "realpath из `%s`, преобразованный в `%s`, спецификация обновлена", ключ, проверка ) return che ck # Методы, связанные с настройкой 

Пример 2

def get_rp_stripper(strip_path): """ Функция возврата в strip ``realpath`` of `strip_path` from string Параметры ---------- strip_path: str путь для удаления с начала строк. Преобразуется в ``strip_prefix`` с помощью ``realpath(strip_path) + os.path.sep` `. Возвращает ------- stripper: функция func, такая, что ``stripper(a_string)`` удалит ``strip_prefix`` из ``a_string``, если он присутствует, иначе передаст ``a_string`` без изменений """ return get_prefix_stripper(realpath(strip_path) + os.path.sep) 

Пример 3

def test_toolchain_standard_not_implemented(self): spec = Spec() с self.assertRaises(NotImplementedError): self.toolchain(spec) с self.assertRaises(NotImplementedError): self.toolchain.assemble(spec) с self.assertRaises(NotImplementedError): self.toolchain.link(spec) # Проверяем, что build_dir установлен в соответствии со спецификацией на основе временного файла self.assertTrue(spec[`build_dir`].startswith( realpath(tempfile.gettempdir()))) # Кроме того, он был правильно удален. self.assertFalse(exists(spec[`build_dir`] )) 

Пример 4

def find_system_jdks(): """ Возвращает набор действительных JD K каталогов путем поиска стандартных местоположений. """ bases = [ `/Library/Java/JavaVirtualMachines`, `/usr/lib/jvm`, `/usr/java`, `/usr/jdk/instances`, r`C:Program FilesJava` ] jdks = set() для базы в базах: if isdir(base): для n в os.listdir(base): jdk = join(base, n) mac_jdk = join(jdk, `Contents`, `Home`) if isdir(mac_jdk ): jdk = mac_jdk, если is_valid_jdk(jdk): jdks.add(realpath(jdk)) return jdks 

Пример 5

def _expand_dirs_to_files(files_or_dirs, recursive=False): files = [] files_or_dirs = _ensure_list(files_or_dirs) for file_or_dir в files_or_dirs: file_or_dir = op.realpath(file_or_dir) if op.isdir(file_or_dir): # Пропускать имена каталогов, начинающиеся с `.` if _to_skip(file_or_dir): continue # Рекурсивно посещать каталоги и добавлять файлы if recursive: files.extend(_expand_dirs_to_files([op.join(file_or_dir, file) for file in os.listdir(file_or_dir)], recursive=recursive) ) else: files.extend([op.join(file_or_dir, file) for file in os.listdir(file_or_dir)]) elif `*` in file_or_dir: files.extend(glob.glob(file_or_dir)) else: files.append (file_or_dir) возвращает файлы 

Пример 6

def getSubdirs(path, baseNamesOnly=True, excludePythonModulesDirs=True): """Предоставляет список подкаталогов для заданного пути"" " subdirs = [] try: path = realpath(путь) + sep для элемента в os.listdir (путь): кандидат = путь + элемент, если isdir (кандидат): если excludePythonModulesDirs: modFile = кандидат + sep + "__init__.py", если существует (modFile): продолжить, если baseNamesOnly: subdirs.append (элемент) еще: subdirs.append (кандидат), кроме: pass return subdirs 

Пример 7

def get_dataset(num_points): name = `ModelNet10` path = osp.join(osp.dirname(osp.реальный путь(__file__)), `..`, `данные`, имя) train=True, transform=transform, pre_transform=pre_transform) test_dataset = ModelNet( path, name=`10`, train=False, transform=transform, pre_transform=pre_transform) return train_dataset, test_dataset 

Пример 8

def getParameters(self): """Предоставляет словарь с параметрами поиска""" parameters = {`term`: self.findCombo.currentText(), `case`: self.caseCheckBox.isChecked( ), `целое`: self.wordCheckBox.isChecked(), `regexp`: self.regexpCheckBox.isChecked()}, если self.projectRButton.isChecked(): параметры [`in-project`] = истинные параметры [`in- open`] = False parameters[`in-dir`] = `` elif self.openFilesRButton.isChecked(): параметры[`in-project`] = F alse parameters[`in-opened`] = истинные параметры[`in-dir`] = `` else: parameters[`in-project`] = ложные параметры[`in-opened`] = ложные параметры[`in-dir `] = реальный путь( self.dirEditCombo.currentText().strip()) параметры[`файл -filter`] = self.filterCombo.currentText().strip() возвращает параметры 

Пример 9

def _check_if_pyc(fname): """Возвращает True, если расширение . pyc, False, если .py, и None, если иначе""" from imp import find_module from os.path import realpath, dirname, basename, splitext # Нормализовать путь к файлу для find_module() filepath = realpath(fname) dirpath = dirname(filepath) module_name = splitext(basename(filepath))[0] # Проверка и выборка try: fileobj, fullpath, (_, _, pytype) = find_module(module_name, [dirpath]) кроме ImportError : поднять IOError("Не удается найти файл конфигурации. " "Возможно, неверный путь!: {0}".format(filepath)) return pytype, fileobj, fullpath 

Пример 10

def get_planetoid_dataset(name, normalize_features=False, transform= Нет): path = osp.join(osp.dirname(osp.realpath(__file__)), `..`, `данные`, имя) набор данных = Planetoid(путь, имя), если преобразование не равно None и normalize_features: dataset.transform = T.Compose([T.NormalizeFeatures(), transform]) elif normalize_features: набор данных. преобразование = T.NormalizeFeatures() elif преобразование не равно None: набор данных. Formatter( fmt="%(asctime)s %(levelname)-8s %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) screen_handler = logging.StreamHandler( stream=sys.stdout) screen_handler.setFormatter(formatter) logger = logging.getLogger(cls.__name__) logger.setLevel(logging.DEBUG) logger.addHandler(screen_handl er) если log_file: file_handler = logging.FileHandler(realpath(log_file), mode="w" ) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger 

Пример 12

def bro_server(bro_file, interface="eth0", bro_path="/usr/local/ bro/bin/bro"): u""" Ë∑ëbroÊúçÂä°ËøõÁ®ã """ # Список bro_file = path.realpath(bro_file) http_file = "/usr/local/bro/share/bro/base/protocols/http/main.bro" bro_scripts = ` `.join([bro_file, http_file ]) cmd = "sudo {bro_path} -C -b -i {interface} {bro_scripts}" cmd = cmd.format(bro_path=bro_path, interface=interface, bro_scripts=bro_scripts) msg = "cmd: %s" % cmd logging.info(msg) # изменить pwd на /tmp tmp_dir = path.join(path.dirname(path.реальный путь(__file__)), `../../tmp/`) chdir(tmp_dir) result = r un(cmd) logging.info(result.__dict__) 

Пример 13

def ProcessFlags(env, flags): for f in flags: if f: env.MergeFlags(str( f)) # исправить относительный CPPPATH для i, p в enumerate(env.get("CPPPATH", [])): if isdir(p): env[`CPPPATH`][i] = realpath(p) # Отменить любое предыдущее определение имени, либо встроенное, либо # указанное с опцией -D // Проблема № 191 undefines = [u для u в env.get("CCFLAGS", []) if u.startswith("-U")] если undefines: для undef в undefines: env[`CCFLAGS`].remove(undef) env. Append(_CPPDEFFLAGS=" %s" % " ".join(undefines)) 

Пример 14

def _get_settings_helper(self): main_dir = path.dirname(path.реальный путь(__file__)) main_dir = путь.realpath(path.join(main_dir, `..`, `..`)) default_filepath = path.join(main_dir, `default_settings. yml`) user_filepath = path.join(main_dir, `settings.yml`) args = self._get_args() if args.settings_path: user_filepath = args.settings_path # откройте файл по умолчанию и получите информацию о версии с помощью open(default_filepath) как default_filestream : default_filesettings = yaml.load(default_filestream) # FIXME: не используется current_version = default_filesettings[`version`].split(`.`) # flake8: noqa if path.exists(user_filepath): filepath = user_filepath else: filepath = default_filepath with open(filepath) as setting_file: self.settings = yaml.load(setting_file, _OrderedLoader) return SpecialDict(**self.settings) 

Пример 15

def resolve_rpath(lib_path, rpaths ): """ Возврат `lib_path` с разрешенным `@rpath` Если `lib_path` не имеет `@rpath`, то он возвращается как есть. Если `lib_path` имеет `@rpath`, то возвращает первую найденную комбинацию `rpaths`/`lib_path`. Если библиотека не может быть найдена в «rpaths», выводится подробное предупреждение, а «lib_path» возвращается как есть. Параметры ---------- lib_path: str Путь к файлу библиотеки, который может начинаться или не начинаться с `@rpath`. rpaths: последовательность str Последовательность путей поиска, обычно получаемая при вызове `get_rpaths`. Возвращает ------- lib_path: str Строка с разрешенными библиотеками realpath. """ если не lib_path.startswith(`@rpath/`): вернуть lib_path lib_rpath = lib_path.split(`/`, 1)[1] для rpath в rpaths: rpath_lib = realpath(pjoin(rpath, lib_rpath)) if os.path.exists(rpath_lib): return rpath_lib warnings.warn("Не удалось найти { 0} по путям: {1}".format( lib_path, ` `.join(realpath( path) для пути в rpaths), )) return lib_path 

Пример 16

def wheel_libs(wheel_fname, filt_func=None): """ Возвращает анализ зависимостей библиотеки с помощью колеса Python Используйте эту процедуру для создания дампа дерева зависимостей. Параметры ---------- wheel_fname: str Имя файла колеса filt_func: None или callable, необязательный. Если None, проверить все файлы на наличие зависимостей от библиотек. Если функция вызывается, принимает имя файла в качестве аргумента, возвращает True, если мы должны проверить файл, в противном случае — False. Возвращает ------- lib_dict: словарь dict с (ключ, значение) парами (``libpath``, ``dependings_dict``). ``libpath`` - это зависимая библиотека относительно корневого пути колеса, если оно находится в дереве колес. ``dependings_dict`` - это (ключ, значение) из (``depending_lib_path``, ``install_name``). Опять же, ``depending_lib_path`` является библиотекой относительно корневого пути колеса, если оно находится в дереве колеса. """ с TemporaryDirectory() как tmpdir: zip2dir(wheel_fname, tmpdir) lib_dict = tree_libs(tmpdir, filt_func) return stripped_lib_dict(lib_dict, realpath(tmpdir) + os.path.sep) 

Пример 17

def main(): parser = OptionParser(using="%s WHEEL_OR_PATH_TO_ANALYZE " % sys.argv[0] + __doc__, version="%prog" + __version__) parser.add_options([ Option("-a", "--all", action="store_true", help="Показать все зависимости , включая системные библиотеки"), Option("-d", "--depending", action="store_true", help="Показать библиотеки в зависимости от зависимостей")]) (opts, paths) = parser.parse_args() if len(paths) < 1: parser.print_help() sys.exit(1) multi = len(paths) > 1 для пути в путях: if multi: print(path + `:`) indent = ` ` else: indent = `` if isdir(path): lib_dict = tree_libs(path) lib_dict = stripped_lib_dict(lib_dict, realpath (getcwd()) + psep) e lse: lib_dict = wheel_libs(путь) keys = sorted(lib_dict) если не opts.all: keys = [ключ для ключа в ключах if filter_system_libs(key)] если не opts.depending: if len(keys): print(indent + (` ` + отступ).join(keys)) continue i2 = отступ + ` ` для ключа в ключах: print(indent + key + `:`) libs = lib_dict[key] if len(libs): print(i2 + (` ` + i2).join(libs)) 

Пример 18

def test_given_directory(): # Проверка InGivenDirectory cwd = getcwd() с InGivenDirectory() как tmpdir: assert_equal( tmpdir, abspath(cwd)) assert_equal(tmpdir, abspath(getcwd())) с InGivenDirectory(MY_DIR) как tmpdir: assert_equal(tmpdir, MY_DIR) assert_equal(realpath(MY_DIR), realpath(abspath (getcwd()))) # Мы удаляли данный каталог! Проверьте не так сейчас. assert_true(isfile(MY_PATH)) 

Пример 19

defsolveClean(workDir, Architecture, AgressCleanup): """ Решает, что удалить, не делая этого: - Найти все символические ссылки в "СТРОЙКЕ" - Найти все каталоги в "СТРОЙКЕ" - Запланировать удаление каталога, если в нем нет символической ссылки """ symlinksBuild = [os.readlink(x) for x in glob.glob("%s/ BUILD/*-latest*" % workDir)] # $WORK_DIR/TMP всегда следует очищать. Этого не происходит только # в том случае, если у нас закончилось место при распаковке. # $WORK_DIR//store также можно очистить, потому что # нам не нужны настоящие tar-архивы после их сборки. toDelete = ["%s/TMP" % workDir] if агрессивная очистка: toDelete += ["%s/TARS/%s/store" % (workDir, архитектура), "%s/SOURCES" % (workDir)] allBuildStuff = glob.glob("%s/BUILD/*" % workDir) toDelete += [x вместо x в allBuildStuff, если не path.islink(x) и не basename(x) в symlinksBuild] installGlob ="%s/%s/ */" % (рабочий каталог, архитектура) InstallPackages = set([dirname(x) для x в glob.glob(installGlob)]) symlinksInstall = [] для x в InstallPackages: symlinksInstall += [path.realpath(y) для y в glob.glob(x + "/latest*")] toDelete += [x для x в glob.glob(installGlob+ "*"), если не path.islink(x) и не path.realpath(x) in symlinksInstall] toDelete = [x for x in toDelete if path.exists(x)] return toDelete 

Пример 20

def _get_script_dir(follow_symlinks: bool = True ) -> Путь: # Получить путь к хранилищам доверия сложно из-за незначительных различий в OS X, Linux и Windows, если getattr(sys, "frozen", False): # py2exe, PyInstaller, cx_Freeze path = Path(sys.executable).absolute() else: path = Path(inspect.getabsfile (_get_script_dir)) if follow_symlinks: path = Path(realpath(path)) return path.parent 

Архив

os.path.realpath() в Python используется для получения канонического пути к указанному имени файла путем удаления любых символических ссылок, найденных в пути.

Синтаксис: os.path.realpath (путь)

Параметр:
путь : A подобный пути объект, представляющий путь к файловой системе.
Объект, подобный пути, представляет собой либо строку , либо байтовый объект, представляющий путь.

Тип возвращаемого значения: Этот метод возвращает строковое значение, представляющее канонический путь.

Создать программную или символическую ссылку
В Unix или Linux программную или символическую ссылку можно создать с помощью команды ln. ¬† Следующее синтаксис для создания символической ссылки в командной строке:

$ ln -s {исходный файл} {символический файл} 

Пример:

Пример:

В приведенном выше выводе " /home/ihritik/Desktop/file (shortcut) .txt" — это символическая ссылка.

Код: использование os.path.realpath () для получения символических ссылок канонического пути и разрешения.

< tr>

# Программа Python для объяснения os.path.realpath () метод

  
# импорт модуля os

import os

 
# Путь

путь = "/home/ihritik/Desktop/file (shortcut) .txt"

 

 
# Получить канонический путь
# указанного пути
# путем удаления символических ссылок
# встретились на пути

реальный_путь = os.path.realpath (путь)

 
# Напечатать канонический путь

print ( real_path)

 

 
# Путь

path = "/../../ GeeksForGeeks / sample.py"

 

 
# Получить канонический путь
# указанного пути
# устранение любых s символические ссылки
# встречаются в пути

real_path = os.path.realpath (путь)

 
# Вывести канонический путь

print (real_path)

 

 
# Путь

путь = "file.txt"

  

  
# Получить канонический путь
# указанный путь
# удалить все символические ссылки
# выполнено в пути

реальный_путь = os . path.realpath (путь)

 
# Напечатать канонический путь

print (real_path)

 

os.chdir( " /home/ihritik/ Загрузки / " )

 

 
# Путь

путь = "file.txt"

 
# Получить канонический путь
# указанного пути
# устранение любых символических ссылок
# встречается в пути

real_path = os.path.realpath (путь)

  
# Вывести канонический путь

print ( real_path)

Выход:

/home/ihritik/Documents/file (original) .txt/GeeksForGeeks/sample.py/home/ihritik/file.txt/home/ihritik/Downloads /file.txt 

Ссылка: https: /¬†/docs.python.org/3/library/os.path.html