为什么 python 不能从 python 函数中调用 Javascript() ?

2023-12-13

我使用了建议的代码从 iPython Notebook 下载 CSV动态构建 JavaScript 代码,并在从 Jupyter Notebook 调用时使用 Python 中的 Javascript() 将其传递到浏览器。代码效果很好。如果我将相同的代码嵌入到 python 函数中并从同一个 jupyter 笔记本调用 python 函数,则 python 中的调用 Javascript() 不再有效。如何使可重用功能发挥作用?

我正在 Windows 10 上运行的 Chrome 版本 73.0.3683.103(官方版本)(64 位)上尝试此操作。如果已得到答复,我们深表歉意。我已经搜索过SO和谷歌。

这有效..

from IPython.display import Javascript
js_download = """
var csv = '%s';

var filename = 'results.csv';
var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
    navigator.msSaveBlob(blob, filename);
} else {
    var link = document.createElement("a");
    if (link.download !== undefined) { // feature detection
        // Browsers that support HTML5 download attribute
        var url = URL.createObjectURL(blob);
        link.setAttribute("href", url);
        link.setAttribute("download", filename);
        link.style.visibility = 'hidden';
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    }
}
""" % data_in_dataframes.to_csv(index=False).replace('\r','\\r').replace('\n','\\n').replace("'","\'")
Javascript(js_download)

这不起作用,它无法执行 Javascript(js_download),但它也没有给出我在 jupyter 笔记本或浏览器中的 java 控制台中看到的任何错误。就好像它从未执行过 Javascript(js_download)。

from IPython.display import Javascript
def js_download_csv(df_download, s_filename='results.csv'):
    js_download =   """
    var csv = '%s';
    var filename = '%s';
    var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
    if (navigator.msSaveBlob) { // IE 10+
        navigator.msSaveBlob(blob, filename);
    } else {
        var link = document.createElement("a");
        if (link.download !== undefined) { // feature detection
            // Browsers that support HTML5 download attribute
            var url = URL.createObjectURL(blob);
            link.setAttribute("href", url);
            link.setAttribute("download", filename);
            link.style.visibility = 'hidden';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }
    }
    """ % (df_download.to_csv(index=False).replace('\r','\\r').replace('\n','\\n').replace("'","\'"), s_filename)
    Javascript(js_download)
    return None
js_download_csv(df_download, s_filename)

如果我遗漏了任何明显的内容,我深表歉意。我找不到任何错误或日志,其中包含有关所发生情况的任何信息。

欢迎任何建议。


我找到了部分答案,虽然我不知道为什么会出现这个问题,但我找到了如何克服它。在https://medium.com/@tomgrek/reactive-python-javascript-communication-in-jupyter-notebook-e2a879e25906我们在文章中看到以下问题:

一个大问题:某个地方需要返回 Javascript 作为其输出,否则它不会在笔记本中执行。

因此,如果我们将代码更改为以下内容(即返回 Javascript 调用),它就可以工作。

from IPython.display import Javascript
def js_download_csv(df_download, s_filename='results.csv'):
    js_download =   """
    var csv = '%s';
    var filename = '%s';
    var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
    if (navigator.msSaveBlob) { // IE 10+
        navigator.msSaveBlob(blob, filename);
    } else {
        var link = document.createElement("a");
        if (link.download !== undefined) { // feature detection
            // Browsers that support HTML5 download attribute
            var url = URL.createObjectURL(blob);
            link.setAttribute("href", url);
            link.setAttribute("download", filename);
            link.style.visibility = 'hidden';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }
    }
    """ % (df_download.to_csv(index=False).replace('\r','\\r').replace('\n','\\n').replace("'","\'"), s_filename)
    return Javascript(js_download)
js_download_csv(df_download, s_filename)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 python 不能从 python 函数中调用 Javascript() ? 的相关文章

  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • 在 SelectField 和 HiddenField 之间动态更改 WTForms 字段类型

    我有一个 WTForms 字段 value currency 我希望它有时是 SelectField 有时是 HiddenField 我对页面使用相同的视图和模板 既创建新项目又编辑现有项目 如果我加载页面来创建新项目 我希望此字段成为 S
  • 如何用Jackson解析一个可能是字符串也可能是数组的json字段

    我有一个 json 字段 当有一个值时它是字符串 theField oneValue 当有多个值时或数组 theField firstValue secondValue 然后我有一个使用 com fasterxml jackson anno
  • 在 64 位 Windows 上设置汇编器 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我真的需要一些帮助 我已经在网上搜索了大约两天 似乎无法找到我遇到的问题的答案 我下载了 nasm 并安装了它 它似乎可以工作 但我似乎找不到任何适用于 Windows 64 位
  • 将非常大的 csv 文件与公共列合并

    例如 我有两个 csv 文件 0 csv 100a a b c c 200a b c c c 300a c d c c 和 1 csv 100a Emma Thomas 200a Alex Jason 400a Sanjay Gupta 5
  • ajax xhr lengthComputable 使用 php 文件返回 false

    我正在使用 XMLHttpRequest 执行 ajax 请求 以显示请求的进度 它对于 html 文件工作得很好 但是 evt lengthComputable 对于 php 文件返回 false 我的 php 文件以 utf 8 编码
  • ML-Engine 预测出现错误,但本地预测工作正常

    我在这里搜索了很多 但不幸的是找不到答案 我在跑步TensorFlow 1 3 在 MacOS 上通过 PiP 安装 在我的本地计算机上 并使用provided ssd mobilenet v1 coco 检查站 我设法在本地和 ML En
  • WhatsApp Business API 未向手机发送 /message 端点或测试消息

    我已经设置了 WhatsApp Business 来测试他们用于发送消息的新 WhatsApp API 我已按照入门指南进行操作 但在尝试发送邮件时遇到了问题测试消息到我的手机 我测试了使用业务设置中的测试消息调用发送消息 如指南中所示 并
  • 一个变量有两种类型

    我需要从 TypeScript 读取一个 JSON 对象 它有一个变量名称prop两种类型中的哪一种Identifier or Expression到 C TypeScript 可以有一个具有多种类型的变量 具有联合类型功能 例如 prop
  • 如何忽略第一个小数点后的第一个值(如果它是 0),否则如果大于 0,则取它?

    我的值如下 decimal val 1 100 现在我想做的是 如果我在第一个小数点值后有 0 那么我只想取 1 1 并忽略其余部分 如果我有 1 11 那么我想取整个 1 11 这就是我的想法 将十进制转换为字符串 按点分割字符串 检查长
  • TOMCAT 6 SSL 错误:别名无法识别密钥条目

    我正在尝试在收到 CA 后配置密钥库 我收到了一份中级 CA 和一份 CA 我已使用此命令导入它们 keytool delete alias tomcat keystore B1i keystore keytool import alias
  • 接口与抽象类[重复]

    这个问题在这里已经有答案了 在C 中 什么时候应该使用接口 什么时候应该使用抽象类 什么可能是决定因素 更新 C 8 0 新功能 从 C 8 0 开始 接口可以定义成员的默认实现 包括属性 在接口中定义属性的默认实现很少见 因为接口可能不定
  • Div 的高度不及其浮动子元素的总高度

    好吧 我在理解 float 属性的行为方面确实遇到了问题 该页面宽 750 像素 为了将其保持在屏幕中央 我使用了以下代码 div align center div align left style width 100 stuff div
  • 为 JPanel 提供基于百分比的宽度

    制作一个最简单的方法是什么JPanel占据其父容器的固定百分比 按宽度 当其父容器的宽度发生变化时 其宽度应该更新 我尝试使用Box createHorizontalStrut 但是当宽度改变时 它不会更新JPanel的父容器发生变化 你想
  • 如何解决“CastError:对于模型“任务”的路径“_id”处的值“未定义”(类型字符串),转换为 ObjectId 失败”? [复制]

    这个问题在这里已经有答案了 我对 Node JS 还是个新手 我正在尝试使用 Node JS 和 Mongo DB 制作一个图书目录 每次我按删除按钮删除一本书时 都会显示此错误 CastError Cast to ObjectId fai
  • 间歇性 MySQL 服务器已消失错误

    我一直在绞尽脑汁试图找出导致脚本间歇性错误的原因 错误是 SQLSTATE HY000 一般错误 2006 MySQL 服务器已经消失 下面的脚本是一个函数的一部分 该函数执行curl 从 JSON 响应中获取一些值 然后将它们写入表中 我
  • PDO错误处理[重复]

    这个问题在这里已经有答案了 从有关管间的教程中 我了解了一些有关执行 PDO 查询的知识 本教程使用了 try catch 查询的结构基本上如下 try dbh new PDO mysql host hostname dbname dbna
  • 捕获正在运行的进程的 FlashWindowEx 事件

    我有一个已经在运行的应用程序 它时不时地触发 FlashWindowEx 事件 Windows 7 图标闪烁 我想捕捉这个事件 但我似乎找不到任何关于如何捕捉的好信息 我的想法是事情会是这样的 使用 Process GetProcesses
  • Ajax 日历扩展器结束日期

    我正在使用 ajax 日历扩展器作为 起始日期 和 截止日期 文本框 我必须禁用 截止日期 之前的日期或小于所选 起始日期 的日期 我可以看到很多帖子使用range validation 如何在不向用户发送任何消息的情况下禁用日期 首先添加
  • Silverlight 中的 Lync 错误:客户端不受信任

    当我尝试在 Silverlight 应用程序中加载 Lync 控件时 出现错误 客户端不受信任 当我在没有相应的 Web 项目的情况下调试 Silverlight 应用程序时 不会出现此错误 这是生成错误的代码 LyncClient l L
  • 为什么 python 不能从 python 函数中调用 Javascript() ?

    我使用了建议的代码从 iPython Notebook 下载 CSV动态构建 JavaScript 代码 并在从 Jupyter Notebook 调用时使用 Python 中的 Javascript 将其传递到浏览器 代码效果很好 如果我