如何动态获取Databricks Notebook的路径?
How to get the path of the Databricks Notebook dynamically?
请不要为 IPython/Jupyter 笔记本提供解决方案。技术不同。
我想动态获取我的 Databricks 笔记本的路径。这是我可以从 UI“复制文件路径”中获得的内容,如下所示。我无法使用 __file__
,因为那会给我错误。
NameError: name '__file__' is not defined
如果您有类似的东西,可以通过检查 globals()
和 locals()
找到,例如
print(globals())
就我而言,我发现最接近的是:
_dh
例如:
print(_dh)
# ['/media/win10/Users/norok2/Downloads']
每个笔记本都有所谓的“上下文”,其中包含很多关于环境的信息,包括 HTTP 路径、主机名等。它可以作为 Python dict 检索,类似这样(它更简单转换为 JSON 并返回而不是通过 .get
函数获取字段):
import json
ctx = json.loads(dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson())
在 ctx
词典中有一个名为 extraContext
的子词典,其中包含您需要的字段 notebook_path
:
nb_path = ctx['extraContext']['notebook_path']
请不要为 IPython/Jupyter 笔记本提供解决方案。技术不同。
我想动态获取我的 Databricks 笔记本的路径。这是我可以从 UI“复制文件路径”中获得的内容,如下所示。我无法使用 __file__
,因为那会给我错误。
NameError: name '__file__' is not defined
如果您有类似的东西,可以通过检查 globals()
和 locals()
找到,例如
print(globals())
就我而言,我发现最接近的是:
_dh
例如:
print(_dh)
# ['/media/win10/Users/norok2/Downloads']
每个笔记本都有所谓的“上下文”,其中包含很多关于环境的信息,包括 HTTP 路径、主机名等。它可以作为 Python dict 检索,类似这样(它更简单转换为 JSON 并返回而不是通过 .get
函数获取字段):
import json
ctx = json.loads(dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson())
在 ctx
词典中有一个名为 extraContext
的子词典,其中包含您需要的字段 notebook_path
:
nb_path = ctx['extraContext']['notebook_path']