从内核访问文件和笔记本#
从 JupyterLite 0.1.0b9
开始,用户文件浏览器的内容和一些内核(包括 Pyodide 内核)会自动同步。
例如,您可以将文件 file.csv
拖放到 JupyterLite UI 中,然后在 Python 中加载它。
import pandas as pd
data = pd.read_csv('file.csv')
data
同步内容通过挂载自定义 Emscripten 文件系统 (FS) 来实现,该文件系统通过 JupyterLite ServiceWorker
启用与 JupyterLite 内容管理器进行通信。
注意
ServiceWorker
并不总是启用,这取决于用户的浏览器和 HTTP 服务器的 限制。
验证文件系统#
要检查文件系统同步是否启用,请查看 cwd
是否以 /drive/
开头。
import os
os.getcwd() # If successful: "/drive/path/to/notebook"
# ... otherwise: "/home/pyodide"
获取远程内容#
也可以从远程 URL 获取内容。例如,如果您使用的是 Pyodide 内核,可以使用 fetch
函数来实现。
import pandas as pd
from js import fetch
URL = "https://raw.githubusercontent.com/jupyterlite/jupyterlite/main/examples/data/iris.csv"
res = await fetch(URL)
text = await res.text()
filename = 'data.csv'
with open(filename, 'w') as f:
f.write(text)
data = pd.read_csv(filename, sep=',')
data
作为替代方案,您可以导入 pyodide-http
包(默认情况下与 Pyodide 一起分发),以便更无缝地使用熟悉的函数。
import pyodide_http
import pandas as pd
pyodide_http.patch_all()
data = pd.read_csv("https://raw.githubusercontent.com/jupyterlite/jupyterlite/main/examples/data/iris.csv")
data