Estoy luchando por encontrar un caso en el que me gustaría usar os.path.normpath
. En un sistema que tiene enlaces simbólicos, tales como Unix o Windows, el valor que devuelve no puede designar el mismo archivo:
$ mkdir /tmp/one /tmp/one/two
$ ln -s /tmp/one/two /tmp/foo
$ python -c 'import os.path; print os.path.normpath("/tmp/foo/..")'
/tmp
$ ls /tmp/foo/..
two
/tmp/foo/..
es /tmp/one
, no /tmp
!
En Linux, readlink -- "$filename"
normaliza todos los enlaces simbólicos en una ruta. El nombre del archivo que devuelve designa el mismo archivo que $filename
en el momento en que se ejecuta el comando (puede que no, más adelante, si se cambia uno de los enlaces simbólicos involucrados). Pero la mayoría de las veces, eso no es necesario: simplemente mantenga $filename
tal como está.
Si desea eliminar un prefijo ./
por razones estéticas, simplemente quítelo específicamente.
filename=${filename#./}
find | sed -e 's!^\./!!'
Por curiosidad, ¿por qué? './foo' funciona bien, por lo que a los programas no les debe importar ... – Nemo
'./Makefile' no es un nombre de ruta absoluto, por lo que puede usarlo sin problemas. Ahí. Problema resuelto. – tzot
@Nemo: las rutas normalizadas se usan en un archivo de manifiesto. De lo contrario, no sería un problema en absoluto. –