gpt4 book ai didi

python - 如何获得符号路径而不是真实路径?

转载 作者:太空狗 更新时间:2023-10-29 18:24:31 27 4
gpt4 key购买 nike

假设我有一个名为的路径:

/this/is/a/real/path

现在,我为它创建一个符号链接(symbolic link):

/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()或者os.realpath(),他们都返回真实的路径(/this/is/a/real/path/file.txt),这不是我想要的。

我还尝试了 subprocess.Popen('pwd')sh.pwd() ,但也得到了真实路径而不是符号链接(symbolic link)路径。

如何使用 python 获取符号绝对路径?

更新

好的,我读了source code pwd 所以我得到了答案。

非常简单:只需获取 PWD 环境变量即可。

这是我自己的 abspath 来满足我的要求:

def abspath(p):
curr_path = os.environ['PWD']
return os.path.normpath(os.path.join(curr_path, p))

最佳答案

os.path.abspathos.path.realpath 的区别在于os.path.abspath 不解析符号链接(symbolic link),所以它应该正是你要找的。我这样做:

/home/user$ mkdir test
/home/user$ mkdir test/real
/home/user$ mkdir test/link
/home/user$ touch test/real/file
/home/user$ ln -s /home/user/test/real/file test/link/file
/home/user$ ls -lR test

test:
d... link
d... real

test/real:
-... file

test/link:
l... file -> /home/user/test/real/file

/home/user$ python

... python 3.3.2 ...
>>> import os
>>> print(os.path.realpath('test/link/file'))
/home/user/test/real/file
>>> print(os.path.abspath('test/link/file'))
/home/user/test/link/file

就这样吧。您如何使用 os.path.abspath 来解析您的符号链接(symbolic link)?

关于python - 如何获得符号路径而不是真实路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com