Führen Sie Jupyter mit der REST-API aus, um Python-Code zu extrahieren und zu speichern

Ich wollte den Python-Code von jupyter notebook auf einem anderen Computer ausführen, daher habe ich beschlossen, ihn mithilfe der jupyter-API zu extrahieren und zu speichern.

Umgebung

Untersuche den Jupyter-Marker

Da ein Token erforderlich ist, um den Jupyter von außen zu bedienen, überprüfen Sie zuerst den Token.

Ich habe es eingegeben, als ich jupyter zum ersten Mal gestartet habe (sollte ich?), Aber ich glaube, ich habe es normalerweise vergessen. Überprüfen Sie daher den jupyter-Container in der Reihenfolge Suche → Protokollanzeige → Token-Bestätigung.

Drücken Sie die Jupyter-API von außen

Notebook-Status

Ich habe ein Notizbuch zum Testen erstellt. Die URL ist unten. http://localhost:8888/notebooks/work/test1.ipynb image.png

Ausführungsumgebung auf der Seite, die die API trifft

Da die API-Operation mit Python ausgeführt wird, ist das Anforderungspaket erforderlich. Es muss nicht Docker sein, da es nur Anfragen stellt, aber ich denke, es wird einfacher sein, es später zu einem Dienst zu machen, also werde ich es in einen Container legen. Details zur Testumgebung (Dockerfile) unten.

FROM python:3.6-buster
RUN pip install requests

Bauen.

$ docker build -t jupyter-api .

Starten Sie den Container. Sie müssen nicht mounten (-v), sondern mounten vorerst den aktuellen, um die erstellte Datei abzurufen.

$ docker run -it --net host -v $(pwd):/tmp jupyter-api bash

API-Test

Überprüfen Sie zunächst, ob die Jupyter-API verwendet werden kann.

import requests
url_api = 'http://localhost:8888/api'
response = requests.get(url_api)
print(response.status_code, response.text)  # 200 {"version": "6.0.3"}

Ich kann die API sicher treffen, also bekomme ich ein Notizbuch.

notebook_path = '/work/test1.ipynb'
url_file = url_api + '/contents' + notebook_path

token = 'xxxxxxxxxxxxxxxxx'   #Token setzen
headers =  {'Authorization': 'token ' + token}

response = requests.get(url_file, headers=headers)

Notebook-Informationen werden im json-Format in response.text zurückgegeben. Unten wird das Ausführungsergebnis von print (response.text) zur Anzeige formatiert.

{
  "name": "test1.ipynb",
  "path": "work/test1.ipynb",
  "last_modified": "2020-03-07T21:08:58.897321Z",
  "created": "2020-03-07T21:08:57.594298Z",
  "content": {
    "cells": [
      {
        "cell_type": "code",
        "execution_count": 1,
        "metadata": {
            "trusted": true
        },
        "outputs": [
          {
            "data": {
              "text/plain": "array([0.83709745, 0.46685874, 0.94285637, 0.03938868, 0.79617107,\n       0.98784776, 0.27798577, 0.96118447, 0.5253161 , 0.0690074 ])"
            },
            "execution_count": 1,
            "metadata": {},
            "output_type": "execute_result"
          }
        ],
        "source": "import numpy as np\nnp.random.random(10)"
      }
    ],
    "metadata": {
      "kernelspec": {
        "display_name": "Python 3",
        "language": "python",
        "name": "python3"
      },
      "language_info": {
        "codemirror_mode": {
          "name": "ipython",
          "version": 3
        },
        "file_extension": ".py",
        "mimetype": "text/x-python",
        "name": "python",
        "nbconvert_exporter": "python",
        "pygments_lexer": "ipython3",
        "version": "3.7.4"
      }
    },
    "nbformat": 4,
    "nbformat_minor": 4
  },
  "format": "json",
  "mimetype": null,
  "size": 921,
  "writable": true,
  "type": "notebook"
}

Dieses Mal möchte ich den Codeteil des Notizbuchs extrahieren, damit ich die "Quelle" des Blocks "content.cells.cell_type =" code "" extrahieren kann. cell_type ist cell_type = 'markdown' für markdown-Blöcke.

import json
json_src = json.loads(response.text)
src = [cell['source'] for cell in json_src['content']['cells'] if cell['cell_type'] == 'code']

Der Code jeder Zelle wird in src als Array-Element gespeichert, und da diesmal nur eine Zelle des Quellcodes vorhanden ist, handelt es sich um ein Array aus einem Element.

['import numpy as np\nnp.random.random(10)']                                      

Ausgabe in eine Datei. Geben Sie es vorerst mit einer UTF8-Deklaration aus.

with open('/tmp/test1.py', 'w') as f:
    print("# -*- coding: utf-8 -*-", file=f)
    for block in src:
        print(block, file=f)

Überprüfen Sie die Ausgabedatei. Perfekt.

# -*- coding: utf-8 -*-
import numpy as np
np.random.random(10)

Da ich es sicher vom Notebook ausgeben konnte, kann ich es anscheinend kochen, backen oder ausführen.

Referenzmaterial

Recommended Posts

Führen Sie Jupyter mit der REST-API aus, um Python-Code zu extrahieren und zu speichern
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
So bedienen Sie die Discord API mit Python (Bot-Registrierung)
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Die erste API, die mit dem Python Djnago REST-Framework erstellt wurde
Generierung von Spezifikationen und Code in der REST-API-Entwicklung (Python Edition)
Betreiben Sie Nutanix mit der REST-API Teil 2
Versuchen Sie, Facebook mit Python zu betreiben
Eine Geschichte über das Hinzufügen einer REST-API zu einem mit Python erstellten Daemon
Korrespondenzanalyse von Sätzen mit COTOHA API und Speichern in Datei
Hochladen und Herunterladen von Bildern in Azure Storage. Mit Python + Anfragen + REST API
Betreiben Sie Firefox mit Selen aus Python und speichern Sie die Bildschirmaufnahme
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Fraktal zum Erstellen und Spielen mit Python
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Betreiben Sie Haushaltsgeräte mit Python und IRKit
Herausforderung beim Erstellen eines Zeitachsenlistenberichts mit der Toggl-API und Python
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Python-Code zum Trainieren und Testen mit Custom Vision of Cognitive Service
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Interaktive Anzeige algebraischer Kurven in Python, Jupyter
Holen Sie sich den Betreff und den Text von Google Mail mit der Python- und Google Mail-API
Liste des zu verschiebenden und zu merkenden Python-Codes
[Python] Erwähnen Sie mit der Slack-API mehrere Personen
Holen Sie sich mit Python + Requests Benutzer, die zu Ihrer Organisation gehören, über die Garoon REST-API
Ssh stellt mit CentOS7 + Python3 + netmiko eine Verbindung zu Cisco Catalyst her und speichert die Konfiguration lokal
Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
Extrahieren Sie "Nur aktuelles Datum" und "Aktuelles Datum und Uhrzeit" mit Python datetime.
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Python Ver. Einführung in WebPay mit ein wenig Code
Ich möchte die Optimierung mit Python und CPlex behandeln
Schreiben Sie Python2-Code in Python3 um (2to3)
Streaming von Python und SensorTag, Kafka, Spark Streaming-Teil 5: Verbindung von Jupyter zu Spark mit Apache Toree
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
Kinesis mit Python betreiben
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Verbinden Sie realsense D435 mit einem PC, auf dem Ubuntu 16.04 installiert ist, und speichern Sie das Tiefenvideo mit Python
So extrahieren Sie Nullwerte und Nicht-Nullwerte mit Pandas
Crawlen mit Python und Twitter API 1-Einfache Suchfunktion
Betreiben Sie Blender mit Python
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Speichern Sie Listen, Wörterbücher und Tabellen in externen Python-Dateien
YOLP: Extrahieren Sie Längen- und Breitengrade mit der Yahoo! Geocoder-API.
[Automatisierung] Betreiben Sie GitLab mit Python, um die Verwaltung von Anfragen zu vereinfachen
Betreiben Sie Excel mit Python (1)
Betreiben Sie Excel mit Python (2)
Analysieren von Java-Quellcode mit AST (Abstract Syntax Tree) mithilfe von ANTLR und Python
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Lassen Sie uns jupyter ausführen, das von VS Code nativ mit python3.8 unterstützt wird
So extrahieren Sie einen Termin in Google Kalender mit Python
kobitonote.py - Mit Kobito bearbeitete Elemente in Evernote synchronisieren