2013-04-10 65 views
2

我想獲取文件的父目錄。 此代碼無效:python父目錄

projectRoot = os.path.dirname(os.pardir(os.path.abspath(__file__))) 

怎麼了?

(我開發一個Django應用程序,並在我的應用程序的設置文件中使用這個變量)

感謝。

羅曼

+0

退房的UniPath模塊,這很好幫助解決這個問題。 – 2013-04-10 11:53:49

+1

'os.pardir'不是你想象的那樣:'>>> os.pardir' ''..'' – jamylak 2013-04-10 11:59:46

回答

4

您可以通過使用..

import os 
os.path.join(os.path.dirname(__file__), os.pardir) 

或訪問父目錄:

import os 
split_limit = 1 if os.path.isdir(__file__) else 0 
parent_dir = os.path.abspath(__file__).rsplit(os.path.sep, split_limit)[0] 
+1

我用你的第一個解決方案,效果很好!謝謝! – rom 2013-04-10 13:15:38

1

像這樣簡單:

import os 
def get_parent_dir(file_path): 
    return os.path.dirname(file_path) 

要獲得腳本正在運行的FILE_PATH,你可以這樣做:

import sys 
file_path = sys.argv[0] 
+0

'os.path.dirname'似乎將絕對*路徑*返回到文件的直接父目錄的*名稱* – 8bitjunkie 2015-08-29 09:58:08

0

在我們的Django項目,我們使用一個結構: 我們prodaction_settings.py其中對於prodaction服務器和所有變量放置設置。本地計算機上的文件的settings.py

from os.path import dirname, abspath, join 
TEST_DIR = dirname(abspath(__file__)) 
from production_settings import * 

與模板添加本地文件夾:

TEMPLATE_DIRS = (
    join(TEST_DIR, 'tmpl'), 
)