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

标签 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”?

最佳答案

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

删除前导 /,否则 dirname 认为 STATIC_URL 是绝对的,并仅保留它。

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

关于python - os.path.join - 如何处理绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39307631/

相关文章:

Python模块覆盖双下划线

python - matplotlib 动画线图保持为空

python - NO_CALLBACK 在不应该被调用的情况下被调用

python - 如何在Python中从混合txt文件中读取数字

python - 在排序的 Pandas 数据框中按时间戳搜索元素

python - 是否可以手动重启 celery 任务

python - 一维数据中的步进检测

python - 编码给出 "' ascii' 编解码器无法编码字符......序号不在范围内(128)“

python - 为什么我不能使用 inspect.getsource() 查看列表的来源?

python - 如何评估 SymPy 在初始条件下给出的常数?