How to get the realpath of a symbolic link?
Terry Reedy
tjreedy at udel.edu
Sat Oct 31 14:46:02 EDT 2009
Peng Yu wrote:
> On Sat, Oct 31, 2009 at 11:26 AM, Emile van Sebille <emile at fenx.com> wrote:
>> On 10/31/2009 12:03 AM Peng Yu said...
>>> Suppose that I have the following directory and files. I want to get
>>> the canonical path of a file, a directory or a symbolic link.
>>> For example, for 'b' below, I want to get its canonical path as
>>> '/private/tmp/abspath/b'.
>> So, why isn't realpath working for you? It looks like it is, and it works
>> that way here:
>>
>>>>> os.path.realpath('/home/emile/vmlinuz')
>> '/root/vmlinuz-2.4.7-10'
>
> My definition of 'realpath' is different from the definition of
> 'os.path.realpath'. But I'm not short what term I should use to
> describe. I use the following example to show what I want.
>
> In my example in the original post,
>
> '/tmp/abspath/b' is a symbolic link to '/tmp/abspath/a' and '/tmp' is
> a symbolic link to '/private/tmp'.
>
> Therefore, I want to get '/private/tmp/abspath/b', rather than
> '/private/tmp/abspath/a', as the canonical path of 'b'.
>
> If the argument is a symbolic link os.path.realpath will return the
> actually target of the symbolic link. However, I want the path of the
> symbolic link rather than the path of the target.
>
> Hope this is clear.
I suspect that you will have to write your own code for your own
function. os and os.path are written in Python, so look at the code for
realpath and modify it for your modified definition.
Terry Jan Reedy
More information about the Python-list
mailing list