Der Code funktioniert nicht mehr. Wenn du beim Aufruf von ``subprocess.Popen`` ``shell`` auf ``False`` setzt, dann musst du das Kommando als Liste übergeben, und die Ausgabeumleitung selbst implementieren. Da sitzt dann nämlich keine Shell mehr dazwischen, die den Umleitungsoperator interpretieren könnte.
Auch solltest du darauf warten, dass sich der Prozess beendet, bevor du sein "Arbeitsverzeichnis" löschst.