You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Notebook内获取标签栏显示的S3虚拟路径

获取Jupyter笔记本的虚拟路径(S3/HybridContents场景)

在使用HybridContentsManager和S3存储的场景下,本地文件系统路径和虚拟存储路径分离,直接查询本地路径无法得到标签栏显示的虚拟路径,以下是两种可靠的获取方式:

方式一:通过前端JavaScript API直接读取

在笔记本代码单元格中运行以下代码,直接从Jupyter前端界面获取标签栏显示的完整虚拟路径:

from IPython.display import Javascript, display

def fetch_notebook_path():
    display(Javascript('''
        const notebookPath = Jupyter.notebook.notebook_path;
        IPython.notebook.kernel.execute(`notebook_path = "${notebookPath}"`);
    '''))

# 调用函数触发前端交互
fetch_notebook_path()
# 执行后即可通过notebook_path变量获取路径
print(notebook_path)

这个方法完全匹配标签栏显示的内容,不受后端存储映射逻辑影响,是最直接的方案。

方式二:通过Jupyter服务器API查询

如果需要在非交互式代码中获取(比如后台脚本),可以调用Jupyter的内部会话API:

import requests
from notebook.notebookapp import list_running_servers
from IPython import get_ipython

def get_current_notebook_virtual_path():
    for server in list_running_servers():
        # 匹配当前笔记本所在的服务器实例(根据实际端口调整)
        if server['port'] == 8888:
            api_url = f"{server['url']}api/sessions"
            headers = {'Authorization': f"token {server['token']}"}
            resp = requests.get(api_url, headers=headers)
            sessions = resp.json()
            
            # 匹配当前内核对应的会话
            current_kernel_id = get_ipython().kernel.session.session_id
            for session in sessions:
                if session['kernel']['id'] == current_kernel_id:
                    return session['notebook']['path']
    return None

# 获取并打印路径
virtual_path = get_current_notebook_virtual_path()
print(virtual_path)

注意:需要确保代码在当前笔记本的内核环境中运行,并且服务器端口、token能正确识别(如果你的Jupyter端口不是8888,需要对应修改)。

重要提示

不要尝试通过os.getcwd()或__file__获取路径,这些只能得到容器本地的文件系统路径,和S3的虚拟存储路径没有关联。

内容的提问来源于stack exchange,提问作者djuarezg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:35:18