Hier gibt es noch einen weiteren Unterschied, der bisher nicht erwähnt wurde.
subprocess.Popen
führt den <Befehl> als Unterprozess aus. In meinem Fall muss ich die Datei <a> ausführen, die mit einem anderen Programm, <b>, kommunizieren muss.
Ich habe es mit subprocess versucht, und die Ausführung war erfolgreich. Allerdings konnte <b> nicht mit <a> kommunizieren. Alles ist normal, wenn ich beide über das Terminal ausführe.
Noch eine: (HINWEIS: kwrite verhält sich anders als andere Anwendungen. Wenn Sie das Folgende mit Firefox ausprobieren, werden die Ergebnisse nicht die gleichen sein).
Wenn Sie versuchen os.system("kwrite")
bleibt der Programmablauf stehen, bis der Benutzer kwrite schließt. Um das zu umgehen, habe ich stattdessen versucht os.system(konsole -e kwrite)
. Diesmal lief das Programm weiter, aber kwrite wurde zum Unterprozess der Konsole.
Jeder, der kwrite ausführt, darf kein Unterprozess sein (d.h. im Systemmonitor muss er am linken Rand des Baums erscheinen).
0 Stimmen
Ich verstehe das nicht, was ist falsch an
import os; os.system('pip list | grep anatome')
? Zumindest kann man damit Piping machen, wie mein Beispiel zeigt. Es ist nicht klar, wie man das mitimport subprocess; subprocess.run(["ls", "-l"])
.