ZitatEDIT: Warum überhaupt python2? Dies stirbt in ca. 2 Jahren 1 Monat
Gibt es subprocess überhaupt für Python2 ?
ZitatEDIT: Warum überhaupt python2? Dies stirbt in ca. 2 Jahren 1 Monat
Gibt es subprocess überhaupt für Python2 ?
Variable Datum übergeben? Schau mal ob du hier fündig wirst!
https://docs.python.org/2.7/library/subprocess.html
Laut diesem Link würd ich jetzt mal mit "ja" antworten
Gibt es subprocess überhaupt für Python2 ?
Klar. https://docs.python.org/2/library/subprocess.html
Dort steht aber auch ein Hinweis bezüglich Python 2, probier es mal mit Python 3.
Das werde ich mal tun.
Das bekomme ich als"Fehlermeldung":
using "Liberation Mono-16", pixelsize=21.33 file=/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf
Sobald ich den Button betätige.Auf dem Display wird der Pfadname angezeigt und es erscheint wieder der Desktop.
Irgendwie funktioniert subprocess.call nicht. Es erscheint nur der Dateipfad auf dem Display. Mit os.system klappt es. hier mein Code bisher:
Python Alles anzeigen#!/usr/bin/python2 from Tkinter import * import shlex import subprocess from datetime import datetime import os def callback(): cmd = shlex.split("fbi -T 2 -d /dev/fb1 -a -noverbose -t 1 -1 /var/lib/motioneye/Camera1/2017-11-18/*.jpg") subprocess.call(cmd) # os.system("fbi -T 2 -d /dev/fb1 -a -noverbose -t 1 -1 /var/lib/motioneye/Camera1/2017-11-18/*.jpg") def main(): master = Tk() f = Frame(master) b = Button(master, text="BILDER", command=callback, height=16, width=16) b.pack() mainloop() if __name__ == "__main__": main()
Wieso machst du eine gute Vorlage zu nichte indem du wieder Sachen machst die eine sehr schlechte Angewohnheit sind?
Du solltest dir angewöhnen nicht zu viel zu verändern - nur weil es mit der subprocess Zeile oder dem Funktionsaufruf in der der Aufruf steht, eine Fehlermeldung kommt brauch man nicht wieder from Tkinter import * machen. Bitte gewöhne dir ganz schnell wieder dieses "import *" Zeug ab!
Ja, ich hab einen Fehler eingebaut - mit Absicht.
Nein der Fehler hat nichts mit dem subprocess Befehl selbst zu tun, sondern nur mit datetime.
Die Lösung lautet: datetime.strftime("%Y-%m-%d") ändern in datetime.now().strftime("%Y-%m-%d")
Warum hab ich einen Fehler eingebaut? Weil der beholfene sonst nichts lernt wenn er etwas fix&fertiges vorgekaut kriegt.
#!/usr/bin/python2
import Tkinter
import shlex
import subprocess
from datetime import datetime
def btn_callback():
cmd = shlex.split("fbi -T 2 -d /dev/fb1 -a -noverbose -t 1 -1 /var/lib/motioneye/Camera1/{}/*.jpg".format(datetime.now().strftime("%Y-%m-%d")))
print cmd
subprocess.call(cmd)
def main():
master = Tkinter.Tk()
button = Tkinter.Button(master, text="BILDER", command=btn_callback, height=16, width=16)
button.pack()
master.mainloop()
if __name__ == "__main__":
main()
Alles anzeigen
Glaube mir, ich weiß deine Hilfe zu schätzen. Du hast mir schon einige Male geholfen. Ich habe dir auch gesagt, dass ich gerne den subprocess verwenden möchte. Leider funtionierte es nicht richtig, ich werde es weiter versuchen.
EDIT: Ich habe das gleiche Ergebnis wie heute morgen. Liegt es vielleicht am Display? Sobald ich den Button betätige, wird mir nur kurz der Pfad der Bilder angezeigt und dann lande ich wieder auf dem Desktop. Und als Meldung habe ich dann:
Zitatusing "Liberation Mono-16", pixelsize=21.33 file=/usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf
Hast du mal versucht den Befehl, der über subprocess ausgeführt werden soll, manuell unter identischen Bedingungen auszuführen?
Kann es sonst vielleicht sein das dein Code umfangreicher ist als du uns hier bisher gezeigt hast?
Nein, mein Code ist so, wie ich ihn gezeigt habe. Führe ich den Befehl manuell aus, also im Terminal, funktioniert es.
EDIT: Füge ich das shell=True ein, geht es. Aber ohne shlex:
#!/usr/bin/python2
import Tkinter
import shlex
import subprocess
from datetime import datetime
def btn_callback():
subprocess.call("fbi -T 2 -d /dev/fb1 -a -noverbose -t 1 -1 /var/lib/motioneye/Camera1/{}/*.jpg".format(datetime.now().strftime("%Y-%m-%d")), shell=True)
def main():
master = Tkinter.Tk()
button = Tkinter.Button(master, text="BILDER", command=btn_callback, height=16, width=16)
button.pack()
master.mainloop()
if __name__ == "__main__":
main()
Alles anzeigen
Lieber würde ich das shell=True ja weglassen.
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!