确定文件或目录在Linux中的文件系统

时间:2016-07-18 17:01:09

标签: python

我正在尝试查找文件或目录的实际路径以及它在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方式?

1 个答案:

答案 0 :(得分:1)

  • os.path.realpath给出了一系列符号链跳跃的终点。
  • os.path.abspath使相对路径成为绝对路径,但它可能不会命名终点。
  • os.readlink找到最近的符号链接

因此,请使用os.path.realpath('/usr/local/apphome/ansible-hosts')