Just in case you don't know about it, it sounds to me like this would be easier to do with nbconvert, using the execute preprocessor (which runs the notebook and saves it). E.g., you could do (from the command line) jupyter nbconvert --to notebook --execute mynotebook.ipynb --output Analysis/mynotebook.ipynb and then convert that executed notebook to html (output goes to the same folder): jupyter nbconvert --to html Analysis/mynotebook.ipynb
Documentation is at http://nbconvert.readthedocs.io/en/stable/usage.html#convert-notebook Johannes On Wed, Feb 8, 2017 at 5:40 AM DG <[email protected]> wrote: > OK, here's where it comes from. > > I have a data analysis script, residing in my Documents folder. The script > reads raw data files on a server share. It creates a subfolder "Analysis" > and puts a bunch of tables and plots in that folder. At the end of the > script, I want to: > 1. Save a copy of the executed notebook (.ipynb format) in the same > subfolder, and > 2. Save an HTML version of it, also in the same subfolder > > This should be trivial to do but unfortunately it's not. (It's sad that > such a wonderful tool is so lacking in terms of introspection). I currently > handle those two tasks as follows. To create a copy of the notebook, I use > shutil.copy(nb_path,os.path.join(Save_dir,nb_filename)) > To save an HTML copy, I use: > !jupyter nbconvert '$nb_path' --output '$nfname' > > Both of those require to know the path of the notebook currently running. > After much googling, I settled on this: > > connection_file_path = kernel.get_connection_file() > connection_file = os.path.basename(connection_file_path) > kernel_id = connection_file.split('-', 1)[1].split('.')[0] > sessions = json.load(urllib2.urlopen('http://127.0.0.1:8888/api/sessions' > )) > for sess in sessions: > if sess['kernel']['id'] == kernel_id: > nb_rel_path = (sess['notebook']['path']) > break > res = !echo ~ > nb_path = os.path.join(res[0],nb_rel_path) > > This normally works, but the other day I had another server running, so > naturally the second server's port was set to 8889 instead of 8888, > therefore breaking my script. > > There are two other problems. Sometimes the saved .ipynb is not complete. > The last few cells are saved without the output. The sure way to save a > complete notebook is to manually hit the Save button, then re-run the cell > with the file copy command. So I looked for something as simple as issuing > a "Save" command, but that also I could not find. > > The second problem is that code snipped does not seem to work in Windows... > > > On Tuesday, February 7, 2017 at 3:46:33 AM UTC-8, takowl wrote: > > On 6 February 2017 at 23:42, DG <[email protected]> wrote: > > Hello, can anybody please show a way to get the port number of the server > connection in an IPython notebook command? I could not easily find this in > the documentation. > > > By design, kernel code doesn't know about the notebook you're running it > from. You can get a list of all running servers > (notebook.notebookapp.list_running_servers()), but that doesn't indicate > which one is handling the current code. > > As Matthias suggested, please tell us a bit more about why you want to do > this: we may be able to point you to a better option. > > Thomas > > -- > You received this message because you are subscribed to the Google Groups > "Project Jupyter" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jupyter/192cebe0-4e5a-4250-9a80-22018744f419%40googlegroups.com > <https://groups.google.com/d/msgid/jupyter/192cebe0-4e5a-4250-9a80-22018744f419%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Johannes Feist Departamento de Física Teórica de la Materia Condensada Universidad Autónoma de Madrid [email protected] -- You received this message because you are subscribed to the Google Groups "Project Jupyter" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter/CAPERba2%2BqfQXiDDE89cAnNBVG48HC67qzCMtjt-eA8-ujkGyCw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
