次の名前のパスがあるとします。
/this/is/a/real/path
ここで、シンボリック リンクを作成します。
/this/is/a/link -> /this/is/a/real/path
次に、ファイルを次のパスに配置します。
/this/is/a/real/path/file.txt
そしてシンボリックパス名でそれをcdします:
cd /this/is/a/link
これで、pwd コマンドはリンク名を返します。
> pwd
/this/is/a/link
そして今、file.txtの絶対パスを次のように取得したい:
/this/is/a/link/file.txt
しかし、python のos.abspath()
oros.realpath()
では、それらはすべて実際のパス ( /this/is/a/real/path/file.txt
) を返しますが、これは私が望むものではありません。
subprocess.Popen('pwd')
とも試しsh.pwd()
ましたが、シンボリックリンクパスの代わりに実際のパスも取得します。
Pythonでシンボリック絶対パスを取得するにはどうすればよいですか?
アップデート
OK、ソースコードを読んだpwd
ので答えが出ました。
それは非常に簡単です:PWD
環境変数を取得するだけです。
これは私のabspath
要件を満たすためのものです:
def abspath(p):
curr_path = os.environ['PWD']
return os.path.normpath(os.path.join(curr_path, p))