sách gpt4 ăn đã đi

python - os.getcwd() 与 os.path.abspath(os.path.dirname(__file__))

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 21:35:13 31 4
mua khóa gpt4 giày nike

我正在使用 os 模块在我的 Django 项目 settings.py 文件中具有相对路径。变量 SITE_ROOT 设置为 settings.py 文件的当前工作目录,然后用于引用同样位于同一目录中的所有 static/media Mục lục.

这是我的问题:

print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))

在 settings.py 中,上述语句都有相同的输出。但是只有当我使用 SITE_ROOT = os.path.abspath(os.path.dirname(__file__))

时我的模板才会加载

Django 在这里寻找模板:

TEMPLATE_DIRS = (
os.path.join(SITE_ROOT, 'templates'),
)

SITE_ROOT 设置为 os.getcwd() 似乎使 Django 在 settings.py 文件上方的目录中查找模板文件夹

我可以很容易地不使用 os.getcwd() 并且我的网站运行良好,但我很好奇这里可能发生了什么 :)

有人知道吗?

câu trả lời hay nhất

正如 mouad 所说,os.getcwd() 不会完全满足您的期望。

os.getcwd() 不仅仅返回当前工作目录。它在您的环境中默认为 $PWD。这不是脚本所在的位置,而是您thực hiện脚本时所处的位置。

hiện hữu /home/user 并执行 python manage.pyos.getcwd() 将返回 /home/用户hiện hữu /home/ 并执行 python user/manage.pyos.getcwd() 将返回 /trang chủ

但它仍然不会总是正确的,因为可以使用 os.chdir()。换句话说,就像做đĩa CD。它还会改变 os.getcwd() 的返回值。

另一方面。 __tài liệu__ 是模块文件的路径。所以你必须使用它来确保有一个相对于你的模块的路径,而不是可能改变的当前工作目录。

正如 ShawnFumo 所说,__tài liệu__ 可能并不总是绝对的。要更好地了解它的工作原理,您可以查看该答案:Python __tài liệu__ thuộc tính .此外,从 Python3.4 开始,__tài liệu__ 应该始终是绝对路径。

关于python - os.getcwd() 与 os.path.abspath(os.path.dirname(__file__)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274040/

31 4 0
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress