我想检测模块是否发生了变化。现在,使用inotify很简单,你只需要知道你想从哪个目录获取通知。

如何在python中检索模块的路径?


当前回答

这是微不足道的。

每个模块都有一个__file__变量,它显示了你现在所在位置的相对路径。

因此,为模块获取一个目录来通知它很简单,如下所示:

os.path.dirname(__file__)

其他回答

如果你想从你的脚本中知道绝对路径,你可以使用path对象:

from pathlib import Path

print(Path().absolute())
print(Path().resolve('.'))
print(Path().cwd())

慢性消耗病()方法

返回一个表示当前目录的新路径对象(由os.getcwd()返回)

解决()方法

使路径为绝对路径,解析任何符号链接。返回一个新的路径对象:

您可以导入您的模块 然后点击它的名字,你会得到它的完整路径

>>> import os
>>> os
<module 'os' from 'C:\\Users\\Hassan Ashraf\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\os.py'>
>>>

这是微不足道的。

每个模块都有一个__file__变量,它显示了你现在所在位置的相对路径。

因此,为模块获取一个目录来通知它很简单,如下所示:

os.path.dirname(__file__)

如果你导入的是一个site-package(例如pandas),我建议这样获取它的目录(如果import是一个模块,例如pathlib):

from importlib import resources  # part of core Python
import pandas as pd

package_dir = resources.path(package=pd, resource="").__enter__()

在一般情况下。当任务是关于访问站点包的路径/资源时,可以考虑资源。

如果你想从包的任何模块中检索包的根路径,下面的工作(在Python 3.6上测试):

from . import __path__ as ROOT_PATH
print(ROOT_PATH)

主__init__.py路径也可以通过使用__file__来引用。

希望这能有所帮助!