如何在python中找到目标文件的符号链接或软链接的完整(绝对路径)

2024-06-28 19:37:19 发布

您现在位置:Python中文网/ 问答频道 /正文

当我付出 ls-l/etc/fonts/conf.d/70-yes-bitmaps.conf文件

lrwxrwxrwx <snip> /etc/fonts/conf.d/70-yes-bitmaps.conf -> ../conf.avail/70-yes-bitmaps.conf

因此对于符号链接或软链接,如何在python中找到目标文件的完整(绝对路径)

如果我用

os.readlink('/etc/fonts/conf.d/70-yes-bitmaps.conf')

it输出

../conf.avail/70-yes-bitmaps.conf

但我需要绝对路径而不是相对路径,所以我想要的输出必须是

/etc/fonts/conf.avail/70-yes-bitmaps.conf

如何用符号链接或软链接文件的父目录的实际完整路径替换..


Tags: 文件目标os链接confetc符号fonts
3条回答

正如unutbu所说,os.path.realpath(path)应该是正确的答案,返回指定文件名的规范路径,解析指向其目标的任何符号链接。但它在窗户下坏了。

我为Python3.2创建了一个修补程序来修复这个错误,并将其上载到:

http://bugs.python.org/issue9949

它修复了Python32\Lib\ntpath.py中的realpath()函数

我也把它放在我的服务器上,这里:

http://www.burtonsys.com/ntpath_fix_issue9949.zip

不幸的是,这个bug在Python2.x中也存在,而且我知道那里没有修复它的方法。

os.path.realpath(path)

os.path.realpath返回指定文件名的规范路径,消除路径中遇到的任何符号链接。

http://docs.python.org/library/os.path.html#os.path.abspath

joinpath和normpath,这取决于您是在当前工作目录中,还是在其他地方工作。normpath可能对您更直接。

更新:

具体来说:

os.path.normpath( 
  os.path.join( 
    os.path.dirname( '/etc/fonts/conf.d/70-yes-bitmaps.conf' ), 
    os.readlink('/etc/fonts/conf.d/70-yes-bitmaps.conf') 
  ) 
)

相关问题 更多 >