问题
Is it possible to write an Jupyter notebook such that parameters can be passed in via the URL of the notebook?
Example, for a URL such as this:
http://jupyter.example.com/user/me/notebooks/notebook1.ipynb?Variable1=Value1&Variable2=Value2
how could access Variable1 and Variable2 inside the Jupyter cell?
回答1:
You need to find out the URL using JavaScript and pass it to the IPython kernel:
from IPython.display import HTML
HTML('''
<script type="text/javascript">
IPython.notebook.kernel.execute("URL = '" + window.location + "'")
</script>''')
or:
%%javascript
IPython.notebook.kernel.execute("URL = '" + window.location + "'");
Then in the next cell:
print(URL)
After this you can use the tools in the standard library (or plain string operations) to pull out the query parameters.
回答2:
You just need to take the values with javascript and push them to the ipython kernel like in the John Schmitt's link.
Cell [1]:
%%javascript
function getQueryStringValue (key)
{
return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + escape(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
}
IPython.notebook.kernel.execute("Var1='".concat(getQueryStringValue("Variable1")).concat("'"));
IPython.notebook.kernel.execute("Var2='".concat(getQueryStringValue("Variable2")).concat("'"));
And in another cell you can retrieve the python variables named Var1 and Var2:
>>>print Var1
Value1
And:
>>>print Var2
Value2
来源:https://stackoverflow.com/questions/31818127/can-a-jupyter-ipython-notebook-take-arguments-in-the-url