Context Manager für os.chdir(): copy+paste oder path.py

Hallo,
ich suche einen Context Manager für os.chdir().
Der ist auch schnell gefunden:
http://stackoverflow.com/questions/169070/python-how-do-i-write-a-decorator-...
Oder man nimmt:
https://github.com/jaraco/path.py
Man hat jetzt zwei Möglichkeiten:
- copy+paste der Stackoverflow Lösung - oder path.py nehmen.
Was macht ihr? Was spricht dafür, was dagegen?
Gruß, Thomas

Thomas Guettler wrote:
Hallo,
ich suche einen Context Manager für os.chdir().
Der ist auch schnell gefunden:
http://stackoverflow.com/questions/169070/python-how-do-i-write-a-
decorator-that-restores-the-cwd
Oder man nimmt:
https://github.com/jaraco/path.py
Man hat jetzt zwei Möglichkeiten:
- copy+paste der Stackoverflow Lösung
- oder path.py nehmen.
Was macht ihr? Was spricht dafür, was dagegen?
Nicht threadsafe, nicht reentrant.
Im Zweifel plädiere ich für absolute Pfade...

Am 18.10.2013 13:09, schrieb Peter Otten:
Thomas Guettler wrote:
Hallo,
ich suche einen Context Manager für os.chdir().
Der ist auch schnell gefunden:
http://stackoverflow.com/questions/169070/python-how-do-i-write-a-
decorator-that-restores-the-cwd
Oder man nimmt:
https://github.com/jaraco/path.py
Man hat jetzt zwei Möglichkeiten:
- copy+paste der Stackoverflow Lösung
- oder path.py nehmen.
Was macht ihr? Was spricht dafür, was dagegen?
Nicht threadsafe, nicht reentrant.
os.chdir() ist nie threadsafe, da alle Threads eines Prozesses das gleiche current-working-dir haben. Das spricht gegen beide Lösungen. Das ist mir bewusst.
Im Zweifel plädiere ich für absolute Pfade...
Das ist richtig.
Die Frage war eher allgemein: Ab wann zieht man sich die Abhängigkeit zu einer Bibliothek in sein Projekt?
Bzw im konkreten: Nutzen andere path.py?
Gruß, Thomas

Thomas Guettler wrote:
Am 18.10.2013 13:09, schrieb Peter Otten:
Thomas Guettler wrote:
Hallo,
ich suche einen Context Manager für os.chdir().
Der ist auch schnell gefunden:
http://stackoverflow.com/questions/169070/python-how-do-i-write-a-
decorator-that-restores-the-cwd
Oder man nimmt:
https://github.com/jaraco/path.py
Man hat jetzt zwei Möglichkeiten:
- copy+paste der Stackoverflow Lösung
- oder path.py nehmen.
Was macht ihr? Was spricht dafür, was dagegen?
Nicht threadsafe, nicht reentrant.
os.chdir() ist nie threadsafe, da alle Threads eines Prozesses das gleiche current-working-dir haben. Das spricht gegen beide Lösungen. Das ist mir bewusst.
Im Zweifel plädiere ich für absolute Pfade...
Das ist richtig.
Was hält dich ab? ;)
Die Frage war eher allgemein: Ab wann zieht man sich die Abhängigkeit zu einer Bibliothek in sein Projekt?
Keinesfalls wegen dieses popeligen Kontextmanagers, zumal der gegenüber der "offensichtlichen" Variante auf Stackoverflow noch das Reentrance-Problem aufweist:
import path import os os.getcwd()
'/gamma'
alpha = path.path("alpha") with alpha:
... with alpha: pass ...
os.getcwd()
'/gamma/alpha'
Bzw im konkreten: Nutzen andere path.py?
Wenn ich auf der Suche nach einer Bibliothek wäre, die Dateipfade implementiert, würde ich wohl zu der greifen, die die größte Chance hat, in der stdlib zu landen: pathlib.
Die beinhaltet allerdings nicht das von dir gewünschte Feature...
participants (2)
-
Peter Otten
-
Thomas Guettler