我是编码的新手,所以我对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错误! SyntaxError:无效或意外的令牌 有关更多详细信息,请参阅浏览器Javascript控制台。
我原本希望使用第二种方法,以便在使用与!ipython somefile.ipy
类似的东西时绕过魔法命令障碍
阅读javascript,但由于某种原因,第二种方法真的不喜欢我在经过多次测试后发现的var command
内容。我有几个问题,如果我收到一些反馈,我会非常感激:
var command
而导致错误?我无法弄清楚为什么会发生这种情况。(我是否必须使用'textarea'?如果是这样,我该怎么做?我自己试图这样做时迷路了:How to force a line break on a Javascript concatenated string?).ipy
结尾如上所示,但它不喜欢运行单元魔术,也不喜欢从IPython.core.display导入。 (这种方法对我不起作用:How to run an IPython magic from a script (or timing a Python script))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)< / LI>
醇>
答案 0 :(得分:0)
这应该有效,当你使用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