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?
Jupyter Notebook can show that documentation of the function you are calling. Press Shift+Tab to view the documentation.
By default, a notebook server runs locally at 127.0.0.1:8888 and is accessible only from localhost . You may access the notebook server from the browser using http://127.0.0.1:8888 .
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With