Seite 1 von 1

Code stuerzt ab nach os.chdir zum Start eines anderen Programms

Verfasst: Donnerstag 23. April 2020, 15:02
von 3cosystem
Hallo Leute,

ich verwende in meinem Code,

Code: Alles auswählen

os.chdir('D:/obs-studio/bin/64bit/')
os.system('D:/obs-studio/bin/64bit/obs64.exe')
,um OBS zu starten, weil man das nicht direkt ansprechen kann (Fehlermedungen, dass .inis fehlen)
Danach laeuft mein script aber nicht weiter. Schaetze ich muss zum Ursprungspfad zurueck, weil
python seine Wurzeln verloren hat? Wo koennte dieser allerdings sein?
Der Pfad zur Datei funktioniert auf jeden Fall nicht.
Oder kann man OBS auch von meinem Script loesend starten?
Mit sowas wie:

Code: Alles auswählen

os.execlp('D:/obs-studio/bin/64bit/obs64.exe', "notsleep")
Danach beendet sich mein script allerdings komplett....
Ich hoffe mir kann da jemand bitte weiterhelfen.

Ich bedanke mich recht herzlich im Voraus
LG
3cosystem

Re: Code stuerzt ab nach os.chdir zum Start eines anderen Programms

Verfasst: Donnerstag 23. April 2020, 15:09
von Sirius3
os.chdir darf man nie benutzen, weil das globalen Zustand ändert und zu unerwarteten Fehlern an anderer Stelle führen kann.
os.system sollte man nie verwenden, weil es zu low-level ist. Zum Starten von Programmen gibt es subprocess.run und das hat auch den Parameter cwd.

Code: Alles auswählen

subprocess.run(['D:/obs-studio/bin/64bit/obs64.exe'], cwd='D:/obs-studio/bin/64bit/')

Re: Code stuerzt ab nach os.chdir zum Start eines anderen Programms

Verfasst: Donnerstag 23. April 2020, 16:37
von 3cosystem
Hallo,

leider bringt auch dieser Befehl mein Gui und das Script zum freeze, egal an welche Stelle ich das schreibe...
Habs hiermit versucht, naja...

Code: Alles auswählen

command = subprocess.run(['D:/obs-studio/bin/64bit/obs64.exe'], cwd='D:/obs-studio/bin/64bit/')
 subprocess.check_output(command, shell=True)
Erst, wenn ich OBS schließe, gehts weiter...

Re: Code stuerzt ab nach os.chdir zum Start eines anderen Programms

Verfasst: Donnerstag 23. April 2020, 17:27
von __deets__
Natuerlich tut es das, run wartet ja auch explizit auf die Beendigung des gestarteten Programmes. Wenn du das anders haben willst, benutz subprocess.Popen, damit bekommst du eine Prozess-Instanz, die parallel laeuft. Den *output* bekommst du dann aber natuerlich auch nicht sofort. Beides geht nicht.

Die zweite Zeile ist Unfug. Bestenfalls doppelt-gemoppelt, aber vor allem kann sie nix mit dem Resultat der ersten anfangen.

Re: Code stuerzt ab nach os.chdir zum Start eines anderen Programms

Verfasst: Donnerstag 23. April 2020, 18:22
von 3cosystem
Wahnsinn, vielen Dank.
Jetzt laeufts wie Butter.
Das hat mir bestimmt weitere 3 h Austesten erspart...

Schoenen Abend noch!

LG