556 Stimmen

Wie erhalte ich das übergeordnete Verzeichnis in Python?

Könnte mir jemand sagen, wie man das übergeordnete Verzeichnis eines Pfades in Python in einem Cross-Plattform Weg zu erhalten. Z.B..

C:\Program Files ---> C:\

und

C:\ ---> C:\

Wenn das Verzeichnis kein übergeordnetes Verzeichnis hat, wird das Verzeichnis selbst zurückgegeben. Die Frage mag einfach erscheinen, aber ich konnte sie nicht über Google ausgraben.

20voto

Dan Menes Punkte 6319
os.path.split(os.path.abspath(mydir))[0]

16voto

os.path.abspath(os.path.join(somepath, '..'))

Beachten Sie:

import posixpath
import ntpath

print ntpath.abspath(ntpath.join('C:\\', '..'))
print ntpath.abspath(ntpath.join('C:\\foo', '..'))
print posixpath.abspath(posixpath.join('/', '..'))
print posixpath.abspath(posixpath.join('/home', '..'))

11voto

Grandpapa Punkte 159
import os
print"------------------------------------------------------------"
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
print("example 1: "+SITE_ROOT)
PARENT_ROOT=os.path.abspath(os.path.join(SITE_ROOT, os.pardir))
print("example 2: "+PARENT_ROOT)
GRANDPAPA_ROOT=os.path.abspath(os.path.join(PARENT_ROOT, os.pardir))
print("example 3: "+GRANDPAPA_ROOT)
print "------------------------------------------------------------"

10voto

Soumendra Punkte 1307
>>> import os
>>> os.path.basename(os.path.dirname(<your_path>))

Zum Beispiel in Ubuntu:

>>> my_path = '/home/user/documents'
>>> os.path.basename(os.path.dirname(my_path))
# Output: 'user'

Zum Beispiel in Windows:

>>> my_path = 'C:\WINDOWS\system32'
>>> os.path.basename(os.path.dirname(my_path))
# Output: 'WINDOWS'

Beide Beispiele wurden in Python 2.7 ausprobiert

9voto

Rakesh Chaudhari Punkte 2914

Angenommen, wir haben eine Verzeichnisstruktur wie

1]

/home/User/P/Q/R

Wenn wir auf den Pfad von "P" aus dem Verzeichnis R zugreifen wollen, können wir dies mit

ROOT = os.path.abspath(os.path.join("..", os.pardir));

2]

/home/User/P/Q/R

Wenn wir auf den Pfad des Verzeichnisses "Q" vom Verzeichnis R aus zugreifen wollen, können wir dies mit

ROOT = os.path.abspath(os.path.join(".", os.pardir));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X