os.path.join - 如何处理绝对路径

时间:2016-09-03 13:48:48

标签: python

Python 3.5.2

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'

我想加入他们:

STATIC_ROOT = os.path.join(PROJECT_PATH, STATIC_URL)

结果是'/ static /'。

这是文档: https://docs.python.org/3/library/os.path.html

我们可以读到“如果组件是绝对路径,则抛弃所有先前的组件,并从绝对路径组件继续连接。”

在我的情况下,调试器中的BASE_DIR是'/ home / michael / PycharmProjects / photoarchive / photoarchive'。

嗯,这是一条绝对的道路。好吧,它是通过abspath函数获得的。

因此,第一个组件 - BASE_DIR - 是一个绝对路径。

你能告诉我为什么它会被扔掉吗? 以及如何获得'/ home / michael / PycharmProjects / photoarchive / photoarchive / static'?

1 个答案:

答案 0 :(得分:3)

“如果组件是绝对路径,则抛弃所有先前的组件,并从绝对路径组件继续连接。”适用于此处:STATIC_URL是绝对路径,因为它以/开头,因此会删除BASE_DIR

删除前导/其他dirname认为STATIC_URL是绝对的,只保留该值。

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = 'static/'