Mit Python in Speicher schreiben?

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.
abgdf

@Leonidas: Danke für den Code-Hinweis. Werde ich bald auf der Seite entsprechend ändern.

Viele Grüße
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Leonidas hat geschrieben:

Code: Alles auswählen

import urllib
remote_file = urllib.urlopen('http://dein.server.vielleicht.mit.sinnloser.berlin/tld/und.deiner.datei.txt')
remote_file_contents = remote_file.read()
remote_file.close()
Die Verbindung klappt soweit.
Der Server liefert mir eine Integer-Variable mit Namen ex.
Jetzt möchte ich natürlich diese Variable extraieren und auswerten.
Wie komme ich an diese Variable?
Das php Script lefert mir mit: echo "ex{".$exist."}ex"; den Integer.
Für ein Code_Schnipsel wäre ich sehr dankbar, weil ich noch lange nicht "der Pythonfachmann" bin.
BlackJack

Vielleicht solltest Du mal das Python-Tutorial durcharbeiten.

Und verraten was "Der Server liefert mir eine Integer-Variable mit Namen ex." bedeutet. Der Server liefert Dir eine Zeichenkette. Wie sieht die aus?
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Die php-Seite liefer mir keine Zeichenkette, sondern Variablen in denen Datenbankinhalte verpackt sind.
In diesem Fall wird nur die Verbindung zum Server getestet.
Hat die Variable nicht einen bestimmten Wert, sagen wir mal 10, ist die Verbindung zum Server fehlgeschlagen.
Da in der Datenbank auch Vektoren, jede Menge Text, Floatwerte usw gespeichert sind, wäre es doch quatsch mir Zeichenketten liefern zu lassen.
Oder?
BlackJack

Also irgendwo besteht hier ein Missverständnis. Ich dachte Du holst aus einem Python-Skript heraus Daten per `urllib`!? Da werden Bytes übertragen, d.h. eine Folge oder Kette von Bytes, die in Python mit dem Datentyp `str` also als Zeichenkette verarbeitet werden.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Ich sende an die .php auf dem Server Variablen mit unterschiedlichen Inhalten. Das können schonmal bis zu 10 Variablen sein, die dann im php-Script je nach Name der Variablen ausgewertet werden und die Datenbank wird mit den Inhalten gefüttert.
Das gleiche passiert bei einer Datenbankabfrage, nur erwarte ich dann ebenfalls bis zu 10 Variablen die mir eine .php zurückliefert und die ich in der Animation mit Python auswerte.
Ich frage doch nicht die Datenbank 10 mal hintereinander nach Datenbankeinträgen der unterschiedlichsten Spalten ab.
Ich hoffe mich verständlich genug ausdrücken zu können. :oops:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

dieter1a hat geschrieben:Das gleiche passiert bei einer Datenbankabfrage, nur erwarte ich dann ebenfalls bis zu 10 Variablen die mir eine .php zurückliefert und die ich in der Animation mit Python auswerte.
Die Sache ist die, dass die PHP-Seite *immer* Strings rausgibt. Jede PHP-Seite, egal was sie anzeigt.

Dieser String wird im meinem Beispiel nun in ``remote_file_contents`` gespeichert und du kannst ihn beispielsweise mit ``print`` anzeigen lassen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Ja, Leonidas,

ich war so dumm und hatte mir die remote_file anzeigen lassen.
Sorry.
jetzt bekomme ich genau das, was mir die .php liefert.
Nämlich ex{10}ex.
Jetzt kann ich den Inhalt der Variablen $exist durch herausfiltern des String's zwischen {} weiterverarbeiten.
Es klappt hervorragend und ich bedanke mich vielmals für die tolle Hilfe

Mit freundlichen Grüßen

dieter1a
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Nachdem nun alles eigentlich perfekt funktioniert, hat sich ein neues Problem ergeben.
Weil Blender ja seine eigenen Module mitliefert, brauchte auf dem Rechner auf dem die Animation.exe gestartet wurde, kein Python installiert sein.
Das hat sich seit der Verwendung von urllib und re geändert, was auch nicht weiter tragisch ist.
Jetzt stellt sich mir die Frage, ist es möglich entweder vor dem Download der Animation oder vor dem ersten Start der Animation herauszufinden ob Python installiert ist, um dann gegebenenfalls eine Installation einzuleiten?

Edit:
Kann man eventuell das Importieren von os mit try: except: so abfangen, dass keine Ausgabe im shell-Fenster erscheint wenn os nicht da ist?
Ohne Python-Installation kann ich nämlich aus einer Blender-Animation.exe heraus nicht auf das Modul os zu greifen.
Wird aber auf Grund eines Fehlers eine Konsolenausgabe veranlasst, hängt Python in der Animation, weil es keine Konsole gibt.
Wenn so etwas gehen würde, könnte man damit eine Installation einleiten.
Ich habe aber keinen Plan wie man so etwas hin kriegt.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Es ging leichter als ich dachte.

Code: Alles auswählen

try:
    import os
except:
    tue etwas anderes
Das klappt wunderbar ohne Shell Fensterausgabe.
Gruß
dieter1a
BlackJack

Du solltest aber immer konkrete Ausnahmen behandeln und nicht einfach *alle*. In diesem Fall interessiert Dich ein `ImportError`:

Code: Alles auswählen

try:
    import os
except ImportError:
    # tue etwas anderes
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Danke, schon wieder was gelernt.
MfG dieter1a
Antworten