Google Colab - Outputs von verschiedenen Notebooks kopieren?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

Hallo,

ich habe mehrere Notebooks in Google Colab deren Outputs ich gerne zusammenkopieren würde.
Damit meine ich, gibt es eine Möglichkeit eine komplette Zelle incl. deren Ausgabe zu kopieren
und in ein anderes Notebook einzufügen?


Vielen Dank
Benutzeravatar
ThomasL
User
Beiträge: 1377
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Konkretisiere mal was du mit "komplette Zelle" eigentlich meinst.
Den Code kannst du mit Copy Paste kopieren, den Output in eine Datei umleiten und dann kopieren.
Ich vermute aber mal du möchtest die Objekte (Variablen) mit ihrem Inhalt kopieren, dazu könnte man pickle verwenden.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Wenn du die Ausgaben einer Zelle auf z.B. GDRIVE (bzw. einem Cloudspeicher i.A.) sicherst können alle Colab-Notebooks
darauf zugreifen. Man muss den Cloudspeicher und den Colab-Notebook nur mounten.
Beispiel:
Auf GDRIVE einen Ordnern mit dem Namen "myColab" anlegen. Das ist so der zentrale Anlaufpunkt an die
Daten einer Zelle dauerhaft angelegt/gespeichert werden. Dann den Colab-Notebook und GDRIVE mounten
Das macht man so:

from google.colab import drive
drive.mount('/gdrive')
!ln -sf '/gdrive/My Drive/myColab' /content

Mit dem letzten Befehl(dem ln-Befehl) wird ein Symlink gesetzt . Und zwar zwischen dem GDRIVE\myColab-Verzeichnis und
im Home-Verzeichnis des Colab-Notebook(im Navigationsbereich links das Ordnersymbol anklicken um das Home-Verzeichnis
zu sehen) wird das Verzeichnis "content" angelegt. Und in dieses "content"-Verzeichnis wird dann reingeschrieben/abgerufen.
Der Symlink sorgt dann dafür dass alles automatisch auf GDRIVE(oder einem anderen Cloud-Speicher deiner Wahl) landet.

Hoffe damit weitergeholfen zu ahben
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

Das Problem ist, dass ich plötzlich mein Notebook in Google Colab nicht mehr speichern konnte. Das Resultat war,
dass alle meine letzten Ausgaben nicht gespeichert wurden.
Mein vermutlich ziemlich umständlich Weg war, dass ich den gesamten Code per Copy and Paste in ein anderes
Notebook übertragen habe und das Abspeichern wieder möglich war.
Das Problem ist, dass ich zwei Notebooks habe mit verschiedenen Ausgaben, welche ich jedoch in einem einzigen Notebook
brauche.
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Du könnest folgendes versuchen:
Die Zelle mit dem nicht funktionierenden Code als Python-Datei auf das Codelab-Notebook Laufwerk abspeichern lassen.
d.h einfach in die erste Zeile der Zelle z.B. den Befehl: %%writefile <Dateiname> schreiben.
Dann die Python-Datei solange bearbeiten (evtl.auch runterladen und lokal bearbeiten) bis alles wunschgemäß läuft.
Wenn alles funktioniert, brauchst du eigentlich nur noch eine neue Zelle mit einen einzigen Befehl....nämlich: run <Dateiname>

Beispiel:
https://drive.google.com/open?id=1NHgjw ... STNIIFEgpg
Benutzeravatar
ThomasL
User
Beiträge: 1377
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

CodeIt hat geschrieben: Montag 24. Februar 2020, 00:37 Das Problem ist, dass ich plötzlich mein Notebook in Google Colab nicht mehr speichern konnte.
Eventuell war das die Ursache: https://stackoverflow.com/questions/571 ... connecting
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
CodeIt
User
Beiträge: 36
Registriert: Mittwoch 13. September 2017, 06:10

Der Code funktioniert auch in dem Notebook, in welchem ich nicht speichern kann.
Ich suche nach einer Möglichkeit, diese Zelle, d.h. den Code innerhalb dieser Zelle und den ausgegebenen Output nach ausführen des Codes,
in eine Zelle in einem anderen Notebook hineinzukopieren.
Das Problem mit dem Runntime diconnecting kenne ich zu gut. Aber das war hier leider nicht der Fall.
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Wenn ich es richtig verstanden habe, willst du von einem Notebook direkt in ein anderes
Notebook Daten schreiben.

Das geht m.W.so nicht.
Weil jeder Colab-Notebook eine separate Instanz einer LINUX-VM in der Google-Cloud
ist. d.h. Wenn man direkt von einer VM in die andere VM schreiben könnte, würde
man damit ja alle Sicherheitsmechanismen aushebeln.

Es geht AFAIK wie ich zuerst schrieb.
Die erzeugten Daten im ersten Notebook in einen Cloud-Speicher (OneDrive, GDRIVE oder ein Bucket)
speichern. Dann dem zweiten Notebook Zugriffsrechte auf den Cloudspeicher
geben und die dort abgespeicherten Daten im zweiten Notebook nachladen und bearbeiten.

btw
Wenn man Daten zwischen verschiedenen Cloud-Anwendungen hin und her schaufeln will
würde ich ein Bucket als Speicherplatz empfehlen.
Antworten