我正在尝试查找文件或目录的实际路径以及它在Linux中的文件系统。例如,我有一个符号链接:
[felixc@apphost ~]$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_apphost-lv_root
15350768 3442620 11121716 24% /
tmpfs 1962136 16 1962120 1% /dev/shm
/dev/sda1 487652 79197 382855 18% /boot
/dev/mapper/vg_apphost-lv_home
15351248 1558304 13006516 11% /home
/dev/mapper/vg_apphost-lvdata2
67608152 14865428 49301676 24% /data2
[felixc@apphost ~]$ ls -l /usr/local
total 44
drwxr-xr-x. 2 root root 4096 Jun 14 10:06 bin
drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
...
lrwxrwxrwx. 1 root root 14 Dec 29 2015 apphome -> /data2/apphome
但是当我运行以下代码时:
In [1]: import os
In [2]: os.path.abspath('/usr/local/apphome/ansible-hosts')
Out[2]: '/usr/local/apphome/ansible-hosts'
I was expecting: /data2/apphome/ansible-hosts
如何找到ansible-hosts位于/ data2?我可以看到Linux命令' df filename '可以找到它。有没有python方式?
答案 0 :(得分:1)
os.path.realpath
给出了一系列符号链跳跃的终点。os.path.abspath
使相对路径成为绝对路径,但它可能不会命名终点。os.readlink
找到最近的符号链接因此,请使用os.path.realpath('/usr/local/apphome/ansible-hosts')
。