2012-10-15 15 views
5

Es gibt eine Datei a.py.Ruft das übergeordnete Verzeichnis einer bestimmten Datei ab

Die Position ist /home/user/projects/project1/xxx/a.py.

Wenn ich rufe os.getcwd(), gibt es mir /home/user/projects/project1/xxx/. Aber ich möchte /home/user/projects/project1 erreichen. Wie kann ich das in Python machen?

Edit: Ich denke, ich muss klarer sein. Ich möchte das für mein Django-Projekt.

ich benutze diese Codes in meinem settings.py:

PROJECT_PATH = os.path.abspath(os.path.dirname(__file__)) 

dann verwende ich Brache Code angeben, wo mein statischer Dateiordner ist. :

os.path.join(PROJECT_PATH,'statics'), 

meine settings.py Datei ist unter: /home/user/projects/project1/xxx/settings.py

meine statischen Dateiordner unter demselben Verzeichnis wie settings.py ist.

jetzt will ich diesen Ordner /home/user/projects/project1

bewegen, was soll ich mit dem Code zu tun, dass in settings.py

danke

Antwort

9
>>> import os 
>>> os.getcwd() 
'/tmp/test' 
>>> os.chdir('..') 
>>> os.getcwd() 
'/tmp' 
>>> 

Der Punkt Punkt (..) stellt die Mutter Verzeichnis. Weil relative Pfadnamen einen Pfad angeben, der im aktuellen Verzeichnis beginnt.

Siehe Dokumentation von os.chdir.

+0

Betrachten wir 'mit os.pardir' statt'‘..''. Auf den meisten Systemen werden sie dasselbe sein, aber ich nehme an, dass es dort ein oder zwei obskure Systeme gibt, wo sie anders sind. – mgilson

13
from os.path import dirname 

print(dirname(dirname(__file__))) 

Bei jedem Anruf dirname gibt es Ihnen übergeordnetes Verzeichnis. Ruf so oft wie nötig an.

Alternativ können Sie folgendes tun:

normpath(join(path1, '..', '..')) 
+5

Anstelle der Festcodierung von ''..' 'sollten Sie stattdessen' os.pardir' verwenden. – mgilson

Verwandte Themen