16

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?

2 Answers 2

17

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.

Sign up to request clarification or add additional context in comments.

3 Comments

I marked this question as answered before I tried it. I'm struggling to make it work. See stackoverflow.com/q/37172978/1698426 .
I had working with an additional double quote: IPython.notebook.kernel.execute("URL = '" + window.location + "'");
There's a package that does the handling of the pulling out for you as long as you add a cell with # Parameters: as the content. See Jupyter Notebook Params, which includes a launch binder badge for letting you run a demo in a temporary session backed via the MyBinder service.
4

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.