2009-10-09 4 views
16

Mögliche Duplizieren:
How to get/set logical directory path in pythonGibt es eine Version von os.getcwd(), die Symlinks nicht dereferenziert?

Ich habe ein Python-Skript, das ich von einem Symlink-Verzeichnis laufen, und ich rufe os.getcwd() darin, erwarten die Symlink Weg zu bekommen Ich habe es ausgeführt. Stattdessen gibt es mir den "richtigen" Pfad, und in diesem Fall ist das nicht hilfreich. Ich brauche es, um mir die symbolisierte Version zu geben.

Hat Python einen Befehl dafür?

Antwort

13

Umgehung: os.getenv('PWD')

+0

Ah, danke. Das funktioniert definitiv! –

+4

Beachten Sie, dass die 'PWD' -Umgebungsvariable nicht durch' os.chdir() 'aktualisiert wird, sodass sie auch dann mit os.getcwd()' inkonsistent sein kann, wenn überhaupt keine Symlinks vorhanden sind. –

11

In der Regel ist dies nicht möglich. os.getcwd() Anrufe getcwd (3) und nach POSIX.1-2008 (IEEE Std 1003.1-2008):

Der Pfadname wird keine Komponenten enthalten, die Punkt- oder Punkt-Punkt sind, oder sind symbolische Links.

os.getenv['PWD'] ist schalen abhängig und werden beispielsweise mit sh von FreeBSD nicht.

Verwandte Themen