Jupyter导入函数中的相对文件路径



我有一个基本但令人讨厌的文件读取问题。

我有一个像这样设置的回购:

/repo/functions/feature.py
/script.sql
/repo/notebooks/task.ipynb

feature.py中,我有一个读取script.sql并根据一些输入对其进行修改的函数。将此函数导入到/functions目录中的笔记本中效果良好。

然而,当我在不同的目录/notebooks中有一个笔记本task.ipynb时,函数现在给出一个";找不到文件";错误如果我将.sql文件移到/notebooks,它就会再次工作,但这还远远不够理想。我还考虑过将所有静态文件合并到一个目录中,但这很烦人。

有没有一种方法可以正确地路由文件路径查找,使其始终发生在输入的位置,而不管函数本身是在哪里导入和调用的?

这就是您想要的:stackoverflow线程。

您可以在feature.py中使用__file__关键字来访问feature.py所在的目录。然后,如果script.sql始终与feature.py.在同一目录中,则可以可靠地构建到script.sql的路径

我会给spatzlsberger一个答案奖,因为他确实为我指出了如何制作一个"总是相对于当前模块";文件路径?

这个答案对我来说很有效。利用pathlib并像这样修改文件路径。

from pathlib import Path
here = Path(__file__).parent
fname = here/'script.sql'

最新更新