引用项目外部的相对目录

2024-10-01 09:30:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的一个应用程序中,我想从我机器上的另一个目录加载一些数据。我的Django项目位于C:/Projects/MyProject,我的应用程序位于C:/Projects/MyProject/myapp,我的数据目录位于C:/Data/MyAppData。由于各种原因,我不想将这些数据直接存储在应用程序的静态目录中。我该怎么做?你知道吗

这是我试过的。在C:/Projects/MyProject/settings.py中,我有以下内容:

import os
DATA_ROOT = `C:/Data`
DATA_DIR = os.path.join(DATA_ROOT, 'MyAppData')

但是现在如何引用视图文件中的DATA_DIR?你知道吗

另外,假设我希望保持所有内容的相对性,并避免硬编码C:/Data。这可能吗?如下所示:

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DATA_ROOT = BASE_DIR + '../../../Data'
DATA_DIR = os.path.join(DATA_ROOT, 'MyAppData')

Tags: 数据pathimport目录应用程序databaseos
1条回答
网友
1楼 · 发布于 2024-10-01 09:30:13

BASE_DIR + '../../../Data'不包含适当的中间分隔符。在那里也使用os.path.join。你知道吗

顺便说一句,os.path.join接受多个参数。所以你可以这样写:

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DATA_ROOT = os.path.join(BASE_DIR, '../../../Data', 'MyAppData')

# To get absolute path
DATA_ROOT = os.path.abspath(os.path.join(BASE_DIR, '../../../Data', 'MyAppData'))

要访问视图中的DATA_ROOT,请在视图中导入settings

from django.conf import settings

# Do something with `settings.DATA_ROOT`

更新

如果使用Python 3.4+,则可以使用^{}

DATA_ROOT = pathlib.Path(__file__).resolve().parents[3] / 'Data' / 'MyAppData'

相关问题 更多 >