gpt4 book ai didi

javascript - 如何在没有文件名的情况下运行 JavaScript

转载 作者:行者123 更新时间:2023-12-03 03:46:44 25 4
gpt4 key购买 nike

我是编码新手,所以我有一个关于 Jupyter Notebook 和 Javascript 使用的问题。我当前的代码片段如下(trueName 在此代码之前定义,pickle.dump 通常是选项卡式的,但由于堆栈溢出的格式而不在这里):

<小时/>
%%javascript
var kernel = Jupyter.notebook.kernel;
console.log(kernel);
var command = "import pickle" + "\n" + "file_name = 'testfile'" + "\n" + "with open(file_name, 'wb') as my_file_obj:" + "\n" + "pickle.dump(trueName,my_file_obj)";
kernel.execute(command);
<小时/>

这工作正常,但由于某种原因,当我将其放入以下格式时:

from IPython.core.display import Javascript
Javascript("""
var kernel = Jupyter.notebook.kernel;
console.log(kernel);
var command = "import pickle" + "\n" + "file_name = 'testfile'" + "\n" + "with open(file_name, 'wb') as my_file_obj:" + "\n" + " "pickle.dump(trueName,my_file_obj)";
kernel.execute(command);""")

即使代码相同,我也会收到以下错误:

Javascript error adding output! SyntaxError: Invalid or unexpected token See your browser Javascript console for more details.

<小时/>

我本来希望使用第二种方法来绕过使用类似于 !ipython somefile.ipy 的魔法命令障碍读取 javascript,但由于某种原因,第二种方法确实不喜欢我经过多次测试后发现的 var 命令。我有几个问题,如果我收到一些反馈,我将不胜感激:

  1. 为什么第二种方法会因我的 var 命令 而出现错误?我不明白为什么会发生这种情况。(我真的必须使用“textarea”吗?如果是这样,我该怎么做?我自己尝试这样做时迷失了:How to force a line break on a Javascript concatenated string?)
  2. 有没有一种方法可以让我在不直接在笔记本中运行 Javascript 魔法?我尝试在一个单独文件中的代码上运行 ipython,其结尾如上所示,但它不喜欢运行 cell magic 也不喜欢从 IPython.core.display 导入。 (这个方法对我不起作用:How to run an IPython magic from a script (or timing a Python script))
  3. 在使用诸如 def run_javascript(code): 之类的函数时,有没有办法直接执行 Javascript 代码(而不是通过文件)?在 Jupyter 中执行单元格会返回参数 code 下的代码,但我不知道如何运行它。我一直在四处寻找,但我找到的唯一答案是关于 !node somefile.js 和其他类似的基于文件名的 Javascript 代码。我将不胜感激任何帮助!我确实有一些关于如何按照我的意愿运行 python 代码的建议,但由于 IPython 不能与 Javascript 一起使用,所以我不知所措(Python 提示: run a python script in terminal without the python command Execute python commands passed as strings in command line using python -c )

最佳答案

这应该有效,当您使用 from IPython.core.display import Javascript 时,这是一个类,在评估时将存储返回范围内的数据,一旦返回,数据将不再可用。使用 window.variable 分配给窗口对象以使其全局可用。

from IPython.core.display import Javascript
Javascript("""
var kernel = Jupyter.notebook.kernel;
window.variable = kernel;
var command = "list";
window.variable = command;
console.log(kernel.execute(command));""")

我的想法是从这里得到的

Understanding namespace when using Javascript from Ipython.core.display in Jupyter Notebook

关于javascript - 如何在没有文件名的情况下运行 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45358935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com