pythonoperating-system

How to check if file is a symlink in Python?


In Python, is there a function to check if a given file/directory is a symlink? For example, for the below files, my wrapper function should return True.

# ls -l
total 0
lrwxrwxrwx 1 root root 8 2012-06-16 18:58 dir -> ../temp/
lrwxrwxrwx 1 root root 6 2012-06-16 18:55 link -> ../log

Solution

  • To determine if a directory entry is a symlink use this:

    os.path.islink(path)

    Return True if path refers to a directory entry that is a symbolic link. Always False if symbolic links are not supported.

    For instance, given:

    drwxr-xr-x   2 root root  4096 2011-11-10 08:14 bin/
    drwxrwxrwx   1 root root    57 2011-07-10 05:11 initrd.img -> boot/initrd.img-2..
    
    >>> import os.path
    >>> os.path.islink('initrd.img')
    True
    >>> os.path.islink('bin')
    False