Seite 1 von 1
Variablen in os.system
Verfasst: Dienstag 17. September 2013, 18:39
von audacity363
Guten Abend
ich habe eine Sprachausgabe in bash geschrieben die mit: "./text2speech.sh Text der vorzulesen ist" aufgerufen wird. Jetzt möchte ich das ganze in ein Python Programm implementieren aber mit unterschiedlichen Werten für den Text. Dieser Wert besteht aus einem normalen String und Variablen. Die Variablen werden serial von einem Arduino ausgelesen, gesplittet und das klappt auch.
Hier mal der Code:
Code: Alles auswählen
temp = ser.readline()
print(temp)
split = temp.decode("UTF-8").split(",", 2)
print("Licht: ", split[0])
print("Temperatur: ", split[1])
ausgabe = "Die Temperatur liegt bei " + split[1] + "Grad und das Licht liegt bei" + split[0]
os.system("./text2speech.sh " + ausgabe)
Nur gibt er jetzt aus das er den Befehl Grad nicht kennen würde, da er versucht ein neues Programm, mit dem Namen "Grad", auszuführen.
sh2: Grad: not found
Re: Variablen in os.system
Verfasst: Dienstag 17. September 2013, 19:06
von BlackJack
@audacity363: Zum ausführen von externen Programmen solltest Du das `subprocess`-Modul verwenden. Sonst können genau solche Sachen passieren, dass die Shell irgendetwas von Deiner Eingabe in einer Art interpretiert, die nicht so gewünscht ist.
Re: Variablen in os.system
Verfasst: Dienstag 17. September 2013, 19:10
von mutetella
Hallo,
verwende statt `os.system` besser `subprocess.call`:
mutetella
P.S. Wobei die Fehlermeldung 'Grad not found' ja auch was hat...

Re: Variablen in os.system
Verfasst: Mittwoch 18. September 2013, 16:19
von audacity363
Funktioniert leider nicht...
OSError: [Errno 2] No such file or directory: './text2speech.sh '
Die Variable wird nicht eingefügt...
Re: Variablen in os.system
Verfasst: Mittwoch 18. September 2013, 16:46
von lunar
@audacity363 Nun, ganz offensichtlich befindet sich die Datei "text2speech.sh" nicht in dem Verzeichnis, aus welchem Du das Programm startest. Gebe den absoluten Pfad zu "text2speech.sh" an, oder starte das Programm aus dem Verzeichnis, in welchem sich dieses Skript befindet.
Re: Variablen in os.system
Verfasst: Mittwoch 18. September 2013, 17:00
von audacity363
Re: Variablen in os.system
Verfasst: Mittwoch 18. September 2013, 17:15
von cofi
lunar hat geschrieben:@audacity363 Nun, ganz offensichtlich befindet sich die Datei "text2speech.sh" nicht in dem Verzeichnis, aus welchem Du das Programm startest.
Startest du das Programm z.B. aus `~` wird `./text2speech.sh` als `~/text2speech.sh` interpretiert. Und _nicht_ relativ zum Ort des Python-Skripts, das kannst du z.b. mit
Code: Alles auswählen
import os
os.path.join(os.path.abspath(__FILE__), "text2speech.sh")
erreichen.
Re: Variablen in os.system
Verfasst: Mittwoch 18. September 2013, 18:22
von audacity363
Also du würdest so meinen?
Code: Alles auswählen
import os
os.path.join(os.path.abspath(__FILE__), "text2speech.sh", ausgabe)
Oder verstehe ich jetzt was total falsch?
Re: Variablen in os.system
Verfasst: Mittwoch 18. September 2013, 19:08
von Sirius3
@audacity363: »os.path.join« setzt einen Pfad zusammen, damit »text2speech.sh« auch gefunden wird. Wie meinst Du paßt da »ausgabe« hinzu?
Re: Variablen in os.system
Verfasst: Mittwoch 18. September 2013, 20:03
von cofi
audacity363 hat geschrieben:Oder verstehe ich jetzt was total falsch?
Ja. Wenn du Funktionen nicht verstehst/kennst, dann lies die Dokumentation. In dem Fall die von
subprocess und die von
os.path.
Danach kannst du immernoch fragen .. aber rate nicht.