Seite 1 von 1
Konsole Rückgabewerte weiterverarbeiten
Verfasst: Dienstag 5. Juni 2012, 05:49
von erdmulch
Hallo zusammen,
ich will die Bluetooth Umgebung abscannen.
nun spreche ich über Python die Linux Konsole an, was auch sehr gut funktioniert.
nun würde ich gerne die ausgelesenen Daten weiter verarbeiten.
kann mir jemand sagen wie ich Daten weiter verarbeiten kann?
danke im voraus
Code: Alles auswählen
def Bluetooth():
os.system('hcitool scan')
Bluetooth()
das Ergebnis auf der Konsole sieht folgendermaßen aus:
Code: Alles auswählen
Scanning ...
BC:8B:4B:BC:C7:C6 test
05:06:E8:B2:40:A1 test1
Ende
Re: Konsole Rückgabewerte weiterverarbeiten
Verfasst: Dienstag 5. Juni 2012, 06:05
von gkuhl
Hallo erdmulch,
benutze statt "os.system" das "
subprocess" Modul.
Grüße
Gerrit
Re: Konsole Rückgabewerte weiterverarbeiten
Verfasst: Dienstag 5. Juni 2012, 06:16
von Hyperion
Also als erstes solltest Du mal von `os.system` auf das `subprocess`-Modul migrieren. Dafür böte sich ber Dir `subprocess.check_output` an.
Funktionsnamen solltest Du auch nicht groß schreiben, sondern klein. Zudem sollten sie Funktionalität beschreiben; `bluetooth` vermittelt aber eher nicht diesen Eindruck

Wieso nicht `scan_devices` oder so ähnlich?
erdmulch hat geschrieben:
nun würde ich gerne die ausgelesenen Daten weiter verarbeiten.
kann mir jemand sagen wie ich Daten weiter verarbeiten kann?
Was genau willst Du da wissen? Also wie sollen die Daten denn aufbereitet werden? Und welche Regeln gelten für die Ausgabe?
Die bisherigen Infos sind da ein wenig dürftig. Laut Beispiel sind alle Zeilen Datenzeilen, bis auf die erste und die letzte. Die Datenzeilen kann man einfach mittels `str.split` am Leerzeichen trennen und hätte den Adressteil und den Namen getrennt.
Aber da musst Du uns schon mehr Infos geben.
Last but not least: Hast Du mal bei
pypi gesucht, ob es nicht bereits fertige Wrapper-Libs zum Thema Bluetooth gibt?
Re: Konsole Rückgabewerte weiterverarbeiten
Verfasst: Dienstag 5. Juni 2012, 07:33
von /me
erdmulch hat geschrieben:nun würde ich gerne die ausgelesenen Daten weiter verarbeiten.
kann mir jemand sagen wie ich Daten weiter verarbeiten kann?
Wie schon von einigen anderen gesagt: Die Verwendung von
subprocess ist der passende Weg.
Hier mal ein Beispiel:
Code: Alles auswählen
import subprocess
c = subprocess.Popen(["ipconfig", "/all"], stdout=subprocess.PIPE)
data, error = c.communicate()
print data
Die Ausgabe ist jetzt in
data. Du musst nur noch die enthalte Information in die gewünschten Bestandteile zerlegen.
Re: Konsole Rückgabewerte weiterverarbeiten
Verfasst: Dienstag 5. Juni 2012, 07:38
von Hyperion
@/me: Wenn der OP nicht aktiv "kommunizieren" will, so erscheint mir ja `check_output` als für den Anfänger einfacher zu überblicken

Re: Konsole Rückgabewerte weiterverarbeiten
Verfasst: Dienstag 5. Juni 2012, 07:50
von /me
Hyperion hat geschrieben:@/me: Wenn der OP nicht aktiv "kommunizieren" will, so erscheint mir ja `check_output` als für den Anfänger einfacher zu überblicken

Stimmt. Ich habe einfach mal bei mir rumfliegenden Beispielcode rausgekramt.
Der Popen-Konstruktor bietet allerdings Möglichkeiten, die man sich durchaus mal ansehen sollte.
Re: Konsole Rückgabewerte weiterverarbeiten
Verfasst: Dienstag 5. Juni 2012, 08:01
von BlackJack
Gibt's erst ab 2.7:
Code: Alles auswählen
In [192]: subprocess.check_output
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
AttributeError: 'module' object has no attribute 'check_output'
Wenn man LTS oder stable-Versionen als Ziel hat…