Kleines Problem mit Subprocess und rm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

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
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.
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Vielen Dank für die Hinweise. Kein wunder das es nicht funktioniert hat :roll:
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

@Herr Lehmann: Bitte code in python tags setzten!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten