获取整个 Jupyter Notebook 的当前内容

2024-05-02

我有一个正在运行的 Jupyter Notebook。我希望能够从 Python 中访问当前 Jupyter Notebook 的源代码。我的最终目标是将其传递到ast.parse这样我就可以对用户的代码进行一些分析。理想情况下,我能够做这样的事情:

import ast
ast.parse(get_notebooks_code())

显然,如果源代码是 IPYNB 文件,则需要一个从 Python 单元中提取代码的中间步骤,但这是一个相对容易解决的问题。

到目前为止,我已经找到了将使用list_running_serversIPython 对象的函数,以便发出请求并匹配内核 ID - 这给我当前运行的笔记本的文件名。这是可行的,除了磁盘上的源代码可能与用户浏览器中的源代码不匹配(直到您保存新的检查点)。

我已经看到了一些涉及使用 JavaScript 提取数据的想法,但这需要一个带有魔法的单独单元格或调用 display.Javascript 函数 - 该函数异步触发,因此不允许我将结果传递给ast.parse.

对于如何动态获取当前笔记本源代码作为 Python 中的字符串以便立即处理,有人有什么聪明的想法吗?如果我需要将其作为扩展甚至内核包装器,我完全没问题,我只需要以某种方式获取源代码即可。


嗯,这并不完全是我想要的,但这是我当前的策略。我需要根据用户的代码运行一些Python代码,但它实际上不必直接连接到用户的代码。所以我接下来要运行以下魔法:

%%javascript
// Get source code from cells
var source_code = Jupyter.notebook.get_cells().map(function(cell) {
    if (cell.cell_type == "code") {
        var source = cell.code_mirror.getValue();
        if (!source.startsWith("%%javascript")) {
            return source;
        }
    }
}).join("\n");
// Embed the code as a Python string literal.
source_code = JSON.stringify(source_code);
var instructor_code = "student_code="+source_code;
instructor_code += "\nimport ast\nprint(ast.dump(ast.parse(student_code)))\nprint('Great')"
// Run the Python code along with additional code I wanted.
var kernel = IPython.notebook.kernel;
var t = kernel.execute(instructor_code, { 'iopub' : {'output' : function(x) {
    if (x.msg_type == "error") {
        console.error(x.content);
        element.text(x.content.ename+": "+x.content.evalue+"\n"+x.content.traceback.join("\n"))
    } else {
        element.html(x.content.text.replace(/\n/g, "<br>"));
        console.log(x);
    }
}}});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取整个 Jupyter Notebook 的当前内容 的相关文章

  • 如何从 QLineEdit 动态获取文本? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 怎样才能得到String Text from QlineEdit 我尝试过像这样 myArea getList 功能是获取字符串值并使用字符
  • Python子进程:cmd退出时的回调

    我目前正在使用启动一个程序subprocess Popen cmd shell TRUE 我对 Python 相当陌生 但 感觉 应该有一些 api 可以让我做类似的事情 subprocess Popen cmd shell TRUE po
  • 在 Matplotlib 中选择标记大小

    我正在 matplotlib 中用方形标记绘制散点图 如下所示 我想实现这样的目标 这意味着我必须调整标记大小和图形大小 比例 以使标记之间没有空白 每个索引单元还应该有一个标记 x and y都是整数 所以如果y从 60 到 100 应该
  • Python Ctypes:将返回的 C 数组转换为 python 列表,无需 numpy

    我正在使用 Python Ctypes 来访问一些 C 库 我连接到的函数之一返回const double 它实际上是一个双精度数组 当我在Python中得到结果时 如何将该数组转换为Python列表 C函数的签名 const double
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • 从可变长度字符串中解析值的最佳方法是什么?

    假设我有一个由可变长度的逗号分隔的整数字符串 分割字符串并用值更新变量 如果存在 的最佳方法是什么 目前 我有以下内容 a b c 10 10 1 default values mylist int x for x in input spl
  • Python 删除额外的特殊 unicode 字符

    我正在 python 中处理一些文本 它内部已经采用 unicode 格式 但我想删除一些特殊字符并用更标准的版本替换它们 我目前有一条看起来像这样的线路 但它变得越来越复杂 我发现它最终会带来更多麻烦 tmp infile lower r
  • Django + 后台任务如何初始化

    我有一个基本的 django 项目 用作 Condor 计算集群的前端接口来生成模拟 用户可以从 django 应用程序开始模拟 在 Condor 中 与仿真相关的元数据和仿真状态保存在数据库中 我需要添加一个新功能 某些 模拟完成时发出通
  • 如何定期向数组添加新元素,使其出现在每 500 个元素之后?

    如果我有一个包含 500k 个元素 仅限数字 的数组 列 我如何能够在每 500 个元素之后添加一个新元素 新的数字应该是相邻元素的平均值 例如 在元素 499 和 500 之间有一个值为 499 的值 500 的值 2 的新元素 依此类推
  • 在包含缺失值的 Pandas 数据框列上使用 apply 和 lambda 函数

    这是这个问题的后续 如何根据 pandas 数据框中其他列中的子字符串创建新列 https stackoverflow com questions 70086559 how to create new column based on sub
  • 在Python中,如何将“datetime”对象转换为秒?

    我有一堆日期时间对象 我想计算每个对象自过去固定时间以来的秒数 例如自 1970 年 1 月 1 日以来 import datetime t datetime datetime 2009 10 21 0 0 这似乎只是区分具有不同日期的日期
  • 如何将当前登录的用户指定为模型字段的默认值?

    我想做这样的事情 class Task models Model created by models ForeignKey User default LoggedInUser blank True null True related nam
  • 标记 pandas 系列中连续的 True 元素组

    我有一系列的 pandas 布尔值 我想标记连续的 True 值组 怎么可能做到这一点 是否可以以矢量化的方式做到这一点 任何帮助将不胜感激 Data A 0 False 1 True 2 True 3 True 4 False 5 Fal
  • 将所有构造函数参数作为实例属性添加到 PyCharm 中的类中

    我正在使用 PyCharm 我开始定义一个类 class A def init self a b c 我希望它看起来像这样 class A def init self a b c self a a self b b self c c 使用
  • 需要帮助编写扭曲的代理

    我想编写一个简单的代理 可以对请求页面正文中的文本进行打乱 我已经阅读了 stackoverflow 上的部分扭曲文档和其他一些类似的问题 但我有点菜鸟 所以我仍然不明白 我现在就是这样 不知道如何访问和修改页面 from twisted
  • Scapy TCP 校验和重新计算奇怪的行为

    我正在尝试进行 TCP ACK 欺骗 我从 pcap 文件中嗅探一个 ACK 数据包 并在循环中发送它 增加其 ACK 编号以及另一个选项字段 嗅探部分 预欺骗 from scapy all import from struct impor
  • Python Flask 不更新图像[重复]

    这个问题在这里已经有答案了 这里有一些关于图像的 Flask 问题 但没有一个能解决我的问题 我有一个应用程序可以创建图像 保存它 然后显示它 一次 它应该多次执行此操作 每次更改图像时 它应该加载新图像 它不是 它只显示与其显示的文件名关
  • python散景中的反转轴

    我正在尝试反转 y 轴并在散景散点图中设置 x 和 y 的范围 我在用 BokehPlot bokeh scatter data df x range min utc max utc y range min val max val 我收到错
  • Python - 使用 BeautifulSoup 从 URL 列表中抓取文本的最简单方法

    使用 BeautifulSoup 从几个网页 使用 URL 列表 中抓取文本的最简单方法是什么 有可能吗 最好的 乔治娜 import urllib2 import BeautifulSoup import re Newlines re c
  • 无法让我的脚本自动生成一些值以在有效负载中使用

    我创建了一个脚本 通过随后发送两个 https 请求来从目标页面获取 html 元素 我的脚本可以完美地完成这件事 但是 我必须从 chrome 开发工具复制四个值来填充其中的四个键payload为了发送最终的http请求到达目标页面 这是

随机推荐

  • 从 MySQL 转储中删除 DEFINER 子句

    我有一个数据库的 MySQL 转储 其中有 DEFINER 子句 如下所示 DEFINER root localhost 也就是说 这些 DEFINER 子句位于我的 CREATE VIEW 和 CREATE PROCEDURE 语句中 有
  • 使用 sed 反转输入顺序

    我有一个文件 我们将其命名为 a txt 该文件包含以下文本行 do to what 我想知道 SED 命令是什么来反转此文本的顺序 使其看起来像 what to do 我必须做某种追加吗 就像将 do 附加到 to 所以它看起来像 to
  • 寻找使用库版本的方法?

    我正在通过库在多个电子表格上部署脚本 但正如您所知 脚本 目前 还无法知道它是否正在运行最新版本 我试图通过为我的代码创建自己的版本控制来找到解决此问题的方法 我有一个 Web 服务返回我的库代码的最新版本号 以便我可以对其进行比较 但 o
  • 使用更新面板时服务器控件丢失其 CSS 样式

    我在用我的项目的模板 我在表单中使用了 updatepanel 在更新面板中我采用了 asp net 的不同下拉列表控件 现在的问题是 当页面回发时 应用于下拉列表的 css 样式会丢失 因为我对 CSS 没有详细的了解 所以请帮助 现在有
  • 在 re.sub 中使用变量,以便 Python 解析多个日期时间格式字符串?

    我试图想出一个函数来将各种人类日期 时间格式字符串转换为Python兼容的字符串 来自 yyyy MMM dd to Y b d 到目前为止 我构建了下面的翻译字典 元组列表 yyyy Y MMM b 这样我可以将输入格式字符串中的占位符字
  • 获取运行时权限错误 E/Minikin: addFont 未能创建字体 /system/fonts/NanumGothic.ttf

    我在 google 和 stackoverflow 上搜索了很多 我得到了这个错误 E Minikin addFont 无法在片段中创建字体 system fonts NanumGothic ttf 之后重新加载片段 请帮我解决这个问题 在
  • redux 减速器类型“从不”

    我想使用 useSelector 来选择 rootStore 的正确状态 但无法正确获取状态 原因是主题缩减器根状态给我类型never export type RootState ReturnType
  • 忽略 Xamarin.Forms (PCL) 中的 SSL 证书错误

    有没有办法做类似这里描述的事情 https stackoverflow com a 2675183 https stackoverflow com a 2675183但在 Xamarin Forms PCL 应用程序中 我正在使用 Http
  • Pandas 旋转一列,同时使用与列标题相同的列值

    我想在数据框中旋转一列 其中列值成为列标题 而这些列的实际值成为1 or 0 例子 movie id cluster id answer id 0 73 1 4 1 80 1 5 4 81 1 2 7 84 1 1 10 88 1 1 11
  • google Drive api 是否支持 2 足 oauth?

    现在 我们有一个带有 Google Docs Api 和 2 条腿的 oauth 的应用程序 但是 我们希望迁移到使用 Oauth 2 0 的 Google Drive Api 我们可以将 2 条腿的 oauth 与 Google Driv
  • 如何在工作项更改事件中获取对 TFS 工作项的引用?

    看起来这非常简单 但我正在努力寻找我需要的东西 我正在实现一个 TFS 2013 事件处理程序 并且只想获取对引发更改事件的工作项的引用 获取标题似乎很容易 但我在事件签名对象中找不到属性或方法来为我提供对 WorkItem 对象的引用或查
  • Azure Pipelines 中的 NG 构建失败,出现 NPM 错误 134

    大约 50 的托管构建失败 并出现 npm 错误 134 我正在使用托管 vs2017 构建具有相同构建定义的相同提交 我正在使用 Angular CLI 构建 Angular 应用程序 npm 任务调用 run build 它在我的 pa
  • TypeScript GUID 类? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道在 TypeScript 中像 GUID UUID 这样的 C 的良好 可靠的实现吗 我自己可
  • 当用户控件可见时将焦点设置到它

    I am showing a MessageBox and want the user to be able to copy the contents of the message using CTRL C The problem is t
  • 如何在应用程序启动时获取当前的 Facebook 访问令牌?

    在应用程序启动时 我需要知道用户是否已登录或未显示登录页面 我的第一次尝试是打电话AccessToken getCurrentAccessToken 但这不起作用 请参阅https stackoverflow com a 29854249
  • iOS 相机视频实时预览与拍摄的照片有偏移

    我正在使用相机工作 相机以实时反馈的形式呈现给用户 当用户单击时 就会创建图像并将其传递给用户 问题是图像被设计为位于最顶部位置 该位置高于实时预览显示的位置 您知道如何调整相机的框架 使实时视频的顶部与他们要拍摄的照片的顶部相匹配吗 我以
  • Apksigner 不验证签名

    我试图使用 apksigner 验证最新 Gmail 应用程序 版本 8 11 25 224 的签名 但失败了 I used apksigner verifiy verbose print certs
  • 使用 d3 在两个节点之间绘制多条边

    我一直在关注 Mike Bostock 的代码这个例子 http bl ocks org 1153292学习如何在 d3 中绘制有向图 并且想知道如何构建代码 以便可以在图中的两个节点之间添加多个边 例如 如果上例中的数据集定义为 var
  • 在 MatterJS 中如何通过标签访问主体?

    这个问题被问到了here https stackoverflow com questions 70477975 how to access a constraint by its label in matter js但没有给出答复 为了澄清
  • 获取整个 Jupyter Notebook 的当前内容

    我有一个正在运行的 Jupyter Notebook 我希望能够从 Python 中访问当前 Jupyter Notebook 的源代码 我的最终目标是将其传递到ast parse这样我就可以对用户的代码进行一些分析 理想情况下 我能够做这