path relativo entre dos directorios

Alexis Roda alexis.roda.villalonga en gmail.com
Sab Jul 22 19:53:36 CEST 2006


En/na Carles Pina i Estany ha escrit:
> Hola,
> 
> Cual es la manera más sencilla de tener el path relativo entre dos
> directorios?

elimina el prefijo común y luego añade tantos .. como la longitud del 
origen restante:

origen:  /home/carles/a/b/c   -> b/c  -> longitud 2
destino: /home/carles/a/d/e   -> d/e

../../d/e

origen:  /home/carles/a       ->      -> longitud 0
destino: /home/carles/a/d/e   -> d/e

d/e

origen:  /home/carles/down  -> /home/carles/down -> longitud 3
destino: /etc/samba         -> /etc/samba

../../../etc/samba


seria algo asi:


from itertools import izip

def relatiu(orig, desti) :
     o = orig.split('/')[1:]
     d = desti.split('/')[1:]
     for n, (i, j) in enumerate(izip(o, d)) :
         if i != j :
             break
     if n + 1 == len(o) :
         n += 1
     return '../' * (len(o) - n) + '/'.join(d[n:])



Saludos




Más información sobre la lista de distribución Python-es