Python中等同于PHP的__DIR__魔术常量的是什么?

20
在PHP中,__DIR__魔术常量的值是包含该常量所在文件的目录路径。
Python中是否有类似的功能?
2个回答

31
os.path.dirname(__file__)

在Python 3.4及更高版本中,你会得到一个绝对路径。

在早期版本的Python中,__file__指的是模块导入时相对于cwd的文件位置。如果您调用了chdir,这些信息将会丢失。如果这成为问题,您可以在模块的根目录添加以下内容:

import os.path
_dir = os.path.dirname(os.path.abspath(__file__))

但是,如果你只针对Python 3.4+,这个步骤就不再必要了。


自3.4版本起,__file__是绝对路径,参见https://dev59.com/g2w05IYBdhLWcg3wpDVu#22866630。并且,根据https://dev59.com/g2w05IYBdhLWcg3wpDVu#23616783的演示,`chdir`似乎也不再是一个问题。 - Ben Creasy
1
有人可能会想:“为什么他们不只是创建一个__dir__?”...这是因为命名问题 - Python已经使用了dir__dir __() **但用于对象属性获取...**(不要问我为什么),但我个人认为他们本可以想出像__directory__这样的东西 #耸肩 - jave.web

0
from pathlib import Path

Path(__file__).cwd() 

目前我使用的是Python 3.10.2版本,它能够正常工作。

Pathlib vs OS

OS模块将路径表示为字符串,你无法做太多事情。而Pathlib模块将路径表示为特殊对象,具有有用的方法和属性。

https://builtin.com/software-engineering-perspectives/python-pathlib


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接