2009-10-09 4 views
16

Possible en double:
How to get/set logical directory path in pythonExiste-t-il une version de os.getcwd() qui ne déréférencera pas les liens symboliques?

J'ai un script Python que je lance à partir d'un répertoire ayant un lien symbolique, et je demande os.getcwd() en elle, attendant d'obtenir le chemin un lien symbolique Je l'ai couru à partir de. Au lieu de cela, cela me donne le "vrai" chemin, et dans ce cas ce n'est pas utile. J'en ai besoin pour me donner la version symétrique.

Est-ce que Python a une commande pour ça?

Répondre

13

Solution: os.getenv('PWD')

+0

Ah, merci. Cela fonctionne vraiment! –

+4

Notez que la variable d'environnement 'PWD' n'est pas mise à jour par' os.chdir() ', elle peut donc être incompatible avec' os.getcwd() 'même s'il n'y a aucun lien symbolique. –

11

En général, ce n'est pas possible. os.getcwd() appels getcwd (3), et selon POSIX.1-2008 (IEEE Std 1003.1-2008):

Le chemin ne doit pas contenir des composants qui sont point ou point point, ou sont des liens symboliques.

os.getenv['PWD'] dépend-shell et ne fonctionnera pas par exemple avec sh de FreeBSD.

Questions connexes