2013-04-10 105 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'), 
)