Sto faticando a trovare un caso in cui vorrei utilizzare os.path.normpath
. In un sistema che ha collegamenti simbolici, come Unix o Windows, il valore che restituisce non possono designare lo stesso file:
$ 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/..
è /tmp/one
, non /tmp
!
Su Linux, readlink -- "$filename"
normalizza tutti i collegamenti simbolici in un percorso. Il nome del file restituito designa lo stesso file di $filename
al momento dell'esecuzione del comando (potrebbe non, in seguito, se uno dei collegamenti simbolici coinvolti viene modificato). Ma la maggior parte delle volte non è necessario: basta mantenere $filename
così com'è.
Se si desidera rimuovere un prefisso ./
per motivi estetici, è sufficiente separarlo in modo specifico.
filename=${filename#./}
find | sed -e 's!^\./!!'
Per curiosità, perché? './foo' funziona bene, quindi i programmi non dovrebbero importare ... – Nemo
'./Makefile' non è un percorso assoluto, quindi puoi usarlo senza problemi. Là. Problema risolto. – tzot
@Nemo: i percorsi normalizzati sono utilizzati in un file manifest. Altrimenti non sarebbe un problema. –