Seite 1 von 1

Kleines Problem mit Subprocess und rm

Verfasst: Mittwoch 7. September 2011, 22:32
von Herr Lehmann
Hallo,

ich möchte wildcard dateien mit Subprocess löschen.

Der Aufruf sieht so aus:

subprocess.call(["rm",event.path+"/*.r*"])

rm: Entfernen von »/tmp/*.r*« nicht möglich: Datei oder Verzeichnis nicht gefunden


wenn ich manuell rm /tmp/*.r* eingebe funktionierts allerdings :?

Ein subprocess.call(["rm","-r","/tmp"]) geht auch

Re: Kleines Problem mit Subprocess und rm

Verfasst: Mittwoch 7. September 2011, 22:39
von BlackJack
@Herr Lehmann: Wenn Du das manuell eingibst meinst Du sicher das Du das in einer Shell eingibst. Die Shell expandiert die Wildcards bevor ``rm`` tatsächlich aufgerufen wird. Wenn Du ``rm`` direkt aufrufst dann wird es mit genau den Argumenten aufgerufen die Du angibst, ohne dass eine Shell das vorher noch interpretiert.

Du müsstest die Wildcards also entweder selber expandieren oder eine Shell dazwischen schalten. Und da dann natürlich mit all den Problemen leben, die das mit sich bringt.

Warum überhaupt ein externer Prozess? Es gibt doch `os.remove()`. Zum Auflösen der Wildcards ist das `glob`-Modul hilfreich.

Pfade sollte man übrigens mit `os.path.join()` zusammen setzen.

Re: Kleines Problem mit Subprocess und rm

Verfasst: Mittwoch 7. September 2011, 23:19
von Herr Lehmann
Vielen Dank für die Hinweise. Kein wunder das es nicht funktioniert hat :roll:

Re: Kleines Problem mit Subprocess und rm

Verfasst: Donnerstag 8. September 2011, 07:39
von jens
@Herr Lehmann: Bitte code in python tags setzten!