Absoluten Pfad mit os.path.join () konstruieren
Ich möchte einen absoluten Pfad in Python konstruieren und dabei Dinge wie Pfadtrennzeichen nicht beachten.
edit0: Zum Beispiel gibt es ein Verzeichnis im Stammverzeichnis meines Dateisystems/etc/init.d
(oderC:\etc\init.d
auf w32), und ich möchte dies nur aus den Elementen konstruierenetc
undinit.d
(auf w32 brauche ich wahrscheinlich auch eine disk-id, wieC:
)
Um sich keine Gedanken über Pfadtrenner machen zu müssen,os.join.path()
ist offensichtlich das Werkzeug der Wahl. Aber es scheint, dass dies immer nur schaffen wirdrelativ Pfade:
print "MYPATH:", os.path.join('etc', 'init.d')
MYPATH: etc/init.d
Hinzufügen eines Dummy-ersten Elements (z.''
) hilft nichts:
print "MYPATH:", os.path.join('', 'etc', 'init.d')
MYPATH: etc/init.d
Es ist offensichtlich hilfreich, das erste Element absolut zu machen, aber diese Art der Überwindung der Idee der Verwendungos.path.join()
print "MYPATH:", os.path.join('/etc', 'init.d')
MYPATH: /etc/init.d
edit1: mitos.path.abspath()
wird nur versuchen, einen relativen Pfad in einen absoluten Pfad umzuwandeln. z.B. Erwägen Sie, Folgendes im Arbeitsverzeichnis auszuführen/home/foo
:
print "MYPATH:", os.path.abspath(os.path.join('etc', 'init.d'))
MYPATH: /home/foo/etc/init.d
Was ist die plattformübergreifende Standardmethode, um einen Pfad zu "rooten"?
root = ??? # <--
print "MYPATH:", os.path.join(root, 'etc', 'init.d')
MYPATH: /etc/init.d
edit2: die frage dreht sich wirklich um: seit dem führenden schrägstrich/etc/init.d
macht diesen Pfad zu einem absoluten Pfad. Gibt es eine Möglichkeit, diesen führenden Schrägstrich programmgesteuert zu konstruieren? (Ich möchte nicht davon ausgehen, dass ein führender Schrägstrich einen absoluten Pfad angibt.)