Как я получаю текущее название Ноутбука IPython

Я пытаюсь получить текущее название NoteBook при выполнении ноутбука IPython. Я знаю, что вижу его наверху ноутбука. Как что я после чего-то

currentNotebook = IPython.foo.bar.notebookname()

Я должен завоевать репутацию в переменной.

59
задан 17 April 2017 в 10:49

1 ответ

Принятие у Вас есть хост сервера Ноутбука Jupyter, порт и аутентификационный маркер, это должно работать на Вас. Это базируется прочь этот ответ .

import os
import json
import posixpath
import subprocess
import urllib.request
import psutil

def get_notebook_path(host, port, token):
    process_id = os.getpid();
    notebooks = get_running_notebooks(host, port, token)
    for notebook in notebooks:
        if process_id in notebook['process_ids']:
            return notebook['path']

def get_running_notebooks(host, port, token):
    sessions_url = posixpath.join('http://%s:%d' % (host, port), 'api', 'sessions')
    sessions_url += f'?token={token}'
    response = urllib.request.urlopen(sessions_url).read()
    res = json.loads(response)
    notebooks = [{'kernel_id': notebook['kernel']['id'],
                  'path': notebook['notebook']['path'],
                  'process_ids': get_process_ids(notebook['kernel']['id'])} for notebook in res]
    return notebooks

def get_process_ids(name):
    child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)
    response = child.communicate()[0]
    return [int(pid) for pid in response.split()]

использование В качестве примера:

get_notebook_path('127.0.0.1', 17004, '344eb91bee5742a8501cc8ee84043d0af07d42e7135bed90')
1
ответ дан 1 November 2019 в 11:59

Другие вопросы по тегам:

Похожие вопросы: