2009-10-09 10 views
16

Duplicar posible:
How to get/set logical directory path in python¿Hay alguna versión de os.getcwd() que no elimine los enlaces simbólicos?

que tienen una secuencia de comandos de Python que corro desde un directorio con el enlace simbólico, y hago un llamamiento os.getcwd() en ella, esperando obtener la ruta del enlace simbólico Lo ejecuté desde. En cambio, me da el camino "real", y en este caso eso no es útil. Necesito que realmente me dé la versión enlazada.

¿Tiene Python un comando para eso?

Respuesta

13

Solución: os.getenv('PWD')

+0

Ah, gracias. Eso definitivamente funciona! –

+4

Tenga en cuenta que la variable de entorno 'PWD' no se actualiza por' os.chdir() ', por lo que puede ser incoherente con' os.getcwd() 'incluso cuando no hay ningún enlace simbólico. –

11

En general, esto no es posible. os.getcwd() llamadas getcwd (3), y de acuerdo con POSIX.1-2008 (IEEE Std 1003.1-2008):

La ruta de acceso no debe contener componentes que son punto o punto-punto, o son enlaces simbólicos.

os.getenv['PWD'] es shell-dependiente y no va a funcionar por ejemplo con sh de FreeBSD.

Cuestiones relacionadas