Pythonメソッド| os.path.realpath()

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Python OSモジュールは、オペレーティングシステムと対話するための関数を提供します。 OSには標準のPythonサービスモジュールが付属しています。このモジュールは、オペレーティングシステム固有の機能を使用するためのポータブルな方法を提供します。 os.pathモジュールは、共有パスの管理に使用されるPythonOSモジュールのサブモジュールです。 Pythonのos.path。realpath ()は、指定されたファイル名の正規パスを取得するために使用されます。パスで発生するシンボリックリンクを削除します。
構文:os.path。 realpath (path)パラメーター:path:パスのようなものファイルシステムパスを表すオブジェクト。パスのようなオブジェクトは、パスを表す文字列またはバイトオブジェクトのいずれかです。戻り値タイプ:このメソッドは、正規パスを表す文字列値を返します。 

ソフトリンクまたはシンボリックリンクの作成

UnixまたはLinuxでは、lnコマンドを使用してソフトリンクまたはシンボリックリンクを作成できます。コマンドラインでシンボリックリンクを作成するための構文は次のとおりです。
$ln -s {source-filename} {symbolic-filename} 

例1

 def  realpath (self、spec、key): """仕様のパスキーを解決し、  realpath 、作業ディレクトリに基づく。 "" "キーが仕様にない場合:#何もしないspec [key]でない場合に返されるようになりました:logger.warning( "%sのrealpathを解決できません`定義されていないため"、key)return check =  realpath (join(spec.get( WORKING_DIR、``)、spec [key]))if check!= spec [key]:spec [key] = check logger.warning( "`%s`のrealpath が`%s`に解決され、仕様が更新されました"、key、check)return che ck#関連メソッドの設定

例2

 def get_rp_stripper(strip_path):"""関数をストリップに返す`` realpath `` of`strip_path` fromstringパラメータ----------strip_path:文字列の先頭からストリップするstrパス。 ``  realpath (strip_path)+os.path.sep`によって``strip_prefix``に処理されました`。戻り値-------stripper:`` stripper(a_string)``が``a_string``から``strip_prefix``を削除するようなfunc関数(存在する場合)、そうでない場合は`` a_string`` unmodified"""を渡しますreturn get_prefix_stripper( realpath (strip_path)+ os.path.sep)

例3

 def test_toolchain_standard_not_implemented(self):spec = Spec()with self.assertRaises(NotImplementedError):self.toolchain(spec)with self.assertRaises(NotImplementedError):self.toolchain.assemble(spec)with self.assertRaises(NotImplementedError):self.toolchain.link(spec)#tempfileに基づいて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()for base in bases:if isdir(base):for n in os.listdir(base):jdk = join(base、n)mac_jdk = join(jdk、`Contents`、`Home`)if isdir(mac_jdk ):jdk = mac_jdk if 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 in files_or_dirs:file_or_dir = "https://python.engineering/python-os-path-realpath-method/"> realpath (file_or_dir)if op.isdir(file_or_dir):#「。」で始まるdirnameをスキップしますif _to_skip(file_or_dir):continue#ディレクトリに再帰的にアクセスしてファイルを追加します。ifrecursive: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 (path)+os.listdir内のアイテムのsep (パス):候補=パス+アイテムif isdir(候補):if ExclusivePythonModulesDirs:modFile=候補+sep + "__init__。py"if存在(modFile):続行if baseNamesOnly:subdirs.append(item)else:subdirs.append (候補)例外:パスリターンサブディレクトリ

例7

 def get_dataset(num_points):name =`ModelNet10` path = osp.join(osp.dirname(osp。 realpath (__ file__))、`..`、`data`、name)pre_transform = T.NormalizeScale()transform = T.SamplePoints(num_points)train_dataset = ModelNet(path、name = `10`、 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( )、`whole`:self.wordCheckBox.isChecked()、`regexp`:self.regexpCheckBox.isChecked()} if self.projectRButton.isChecked():parameters [`in-project`] = True parameters [`in- open`] = False parameters [`in-dir`] =``elif self.openFilesRButton.isChecked():parameters [`in-project`] = F alse parameters [`in-opened`] = True parameters [`in-dir`] =`` else:parameters [`in-project`] = False parameters [`in-opened`] = False parameters [`in-dir `] =  realpath (self.dirEditCombo.currentText()。strip())parameters [`file -filter`] = self.filterCombo.currentText()。strip()return parameters 

例9

 def _check_if_pyc(fname):"""拡張子が。の場合はTrueを返します。 pyc、.pyの場合はFalse、それ以外の場合は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__))、 `..`、`data`、name)dataset = Planetoid(path、name)if transform is not None and normalize_features:dataset.transform = T.Compose([T.NormalizeFeatures()、transform])elif normalize_features:dataset。 transform = T.NormalizeFeatures()elif transform is not None:dataset.transform = transform returndataset 

例11

 def _setup_logger(cls、log_file = None):formatter=logging。 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)if 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 is:%s" %cmd logging.info(msg)#pwdを/tmpに変更tmp_dir= path.join(path.dirname(path。 realpath (__ 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))#enumerate(env.get( "CPPPATH"、[]))のi、pの相対CPPPATHを修正:if isdir(p):env [`CPPPATH`] [i] =  realpath (p)#組み込みまたは#-Dオプションで提供された名前の以前の定義をキャンセルします//問題#191 undefines = [u for u in env.get( "CCFLAGS"、[])if u.startswith( "-U")] if undefines:for undef in undefines:env [`CCFLAGS`]。remove(undef)env。 Append(_CPPDEFFLAGS = "%s"% "" .join(undefines))

例14

 def _get_settings_helper(self):main_dir = path.dirname(path。 realpath (__ file__))main_dir=path。 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 settings_file:self.settings = yaml.load(setting_file、_OrderedLoader)return SpecialDict(** self.settings)

例15

 def resolve_rpath(lib_path、rpaths ): """`@rpath`が解決された`lib_path`を返します。`lib_path`に`@rpath`がない場合は、そのまま返されます。 `lib_path`に`@rpath`がある場合、最初に見つかった`rpaths`/`lib_path`の組み合わせを返します。ライブラリが「rpaths」に見つからない場合は、詳細な警告が出力され、「lib_path」がそのまま返されます。パラメータ----------lib_path:strライブラリファイルへのパス。「@rpath」で始まる場合とそうでない場合があります。 rpaths:シーケンスstr検索パスのシーケンス。通常は「get_rpaths」の呼び出しから取得されます。戻り値-------lib_path:str解決されたライブラリrealpathを持つstr。 "" "if not lib_path.startswith(`@ rpath /`):return lib_path lib_rpath = lib_path.split(`/`、1)[1] for rpath in 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)for path in rpaths)、))return lib_path 

例16

 def Wheel_libs(wheel_fname、filt_func = None):"""Pythonホイールを使用したライブラリ依存関係の分析を返しますこのルーチンは、依存関係ツリーのダンプに使用します。パラメータ----------wheel_fname:strホイールのファイル名filt_func:なしまたは呼び出し可能、オプションなしの場合、ライブラリの依存関係についてすべてのファイルを検査します。呼び出し可能の場合、引数としてfilenameを受け入れ、ファイルを検査する必要がある場合はTrueを返し、そうでない場合はFalseを返します。戻り値-------lib_dict:(`` libpath``、``dependents_dict``)の(key、value)ペアを持つdict辞書。 `` libpath``は、ホイールツリー内の場合、ホイールルートパスを基準にして依存しているライブラリです。 ``dependents_dict``は(``dependent_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(usage ="%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 for path in path: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(path)keys =sorted(lib_dict)if not opts.all:keys = [key for key in keys if filter_system_libs(key)] if not opts.depending:if len(keys):print(indent + (`` + indent).join(keys))continue i2 = indent +``キー入力キーの場合:print(indent + key +`:`)libs = lib_dict [key] if len(libs):print(i2 + (`` + i2).join(libs))

例18

 def test_given_directory():#InGivenDirectory()をtmpdirとして使用してInGivenDirectory cwd = getcwd()をテストします:assert_equal( tmpdir、abspath(cwd))assert_equal(tmpdir、abspath(getcwd()))with InGivenDirectory(MY_DIR)as tmpdir:assert_equal(tmpdir、MY_DIR)assert_equal( realpath (MY_DIR)、 realpath (abspath (getcwd())))#指定されたディレクトリを削除していました!今はチェックしないでください。 assert_true(isfile(MY_PATH))

例19

 defdecideClean(workDir、architecture、aggressiveCleanup): """実際に実行せずに削除するものを決定します:-すべてを検索「BUILD」のシンボリックリンク-「BUILD」のすべてのディレクトリを検索します-シンボリックリンクがない場合は、削除するディレクトリをスケジュールします "" "symlinksBuild = [os.readlink(x)for x in glob.glob("%s / BUILD / *-latest * "%workDir)]#$ WORK_DIR/TMPは常にクリーンアップする必要があります。これは、開梱中にスペースが不足した場合にのみ発生するわけではありません。 #$ WORK_DIR /  / storeもクリーンアップできます。これは、ビルド後に実際のtarballが必要ないためです。 toDelete = ["%s / TMP"%workDir] if AggressiveCleanup:toDelete + = ["%s / TARS /%s / store"%(workDir、architecture)、 "%s / SOURCES"%(workDir)] allBuildStuff = glob.glob( "%s / BUILD / *"%workDir)toDelete + = [symlinksBuildのpath.islink(x)およびbasename(x)ではない場合はallBuildStuffのxのx] installGlob = "%s /%s / * / "%(workDir、architecture)installedPackages = set([dirname(x)for x in glob.glob(installGlob)])symlinksInstall = [] for x ininstalledPackages:symlinksInstall +=[path。 realpath (y)for y in glob.glob(x + "/ latest *")] toDelete + = [x for x path.islink(x)でなく、pathではない場合はglob.glob(installGlob + "*")で。 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() は、パスで見つかったシンボリックリンクを削除することにより、指定されたファイル名の正規パスを取得するために使用されます。

構文: os.path。 realpath (パス)

パラメータ:
パス:Aファイルシステムのパスを表すパスのようなオブジェクト。
パスのようなオブジェクトは、パスを表す文字列またはバイトのオブジェクトです。

戻りタイプ: このメソッドは、正規パスを表す文字列値を返します。

ソフトリンクまたはシンボリックリンクを作成する
UnixまたはLinuxでは、lnコマンドを使用してソフトリンクまたはシンボリックリンクを作成できます。¬†以下コマンドラインでシンボリックリンクを作成するための構文は次のとおりです。

 $ ln -s {source-filename} {symbolic-filename} 

例:

例:

上記の出力では、 " / home / ihritik / Desktop / file(ショートカット).txt"はシンボリックリンクです。

コード:os.pathを使用します。 realpath ()正規パスと解像度のシンボリックリンクを取得するメソッド。

< tr>

#os.pathを説明するPythonプログラム。 realpath ()メソッド

  
#osモジュールのインポート

import os

 
#パス

パス = "/ home / ihritik / Desktop / file(shortcut).txt"

 

 
#正規パスを取得
#指定されたパスの#
#シンボリックリンクを削除する
#途中で会った

real_path = os.path。 realpath (パス)

 
#正規パスを出力

print ( real_path)

 

 
#パス

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

 

 
#正規パスを取得
#指定されたパスの#
#任意のsの削除シンボリックリンク
#パスで満たされました

real_path = os.path。realpath (パス)

 
#正規パスを出力

print (real_path)

 

 
#パス

パス = "file.txt"

  

  
#正規パスを取得
#指定されたパス
#シンボリックリンクを削除
#会った途中

real_path = os。パス。 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