Seite 1 von 1
os.system() in Liste
Verfasst: Donnerstag 31. Dezember 2009, 14:08
von ssl17
Hi,
komme grad nicht weiter bei folgenden Problem:
Code: Alles auswählen
import os
li = []
find_sys = os.system('find ~/ -iname *alles*')
li.append(find_sys)
ich würde gern die ausgabe von dem find befehl auf der shell in eine liste hauen, damit ich diese dann weiterbearbeiten kann, aber trotzdem find dateien findet beinhaltet die Liste immer 0. Kann mir jmd weiterhelfen?
Verfasst: Donnerstag 31. Dezember 2009, 14:16
von BlackJack
@ssl17: Du suchst das `subprocess`-Modul. Und die Doku zu `os.system()` solltest Du vielleicht auch mal lesen.
Verfasst: Donnerstag 31. Dezember 2009, 15:17
von ssl17
danke BlackJack für die Hinweise, aber ich trete immer noch auf der stelle..
Code: Alles auswählen
import os
import subprocess
li = []
x = subprocess.Popen('find ~/ -iname *alles*', shell=True)
li.append(x)
ich bekomme es einfach nicht hin, die ausgabe des find kommandos zu verarbeiten.
Am liebsten würde ich die gefunden dateien in einer variable speichern..
Verfasst: Donnerstag 31. Dezember 2009, 15:23
von Klip
Hast du die Doku auch wirklich gelesen? Hier sind ein paar Beispielanwendungen. Schau sie dir mal an.
http://docs.python.org/library/subproce ... ess-module
`subprocess.Popen()` erwartet als erstes Argument ein Iterable, und um die Ausgabe des Programmes zu bekommen ist `subprocess.communicate()` für dich interessant.
Grüße
Klip
Verfasst: Donnerstag 31. Dezember 2009, 16:03
von Dav1d
man kann mit Python auch direkt suchen ohne subprocess, mit os.walk
Verfasst: Donnerstag 31. Dezember 2009, 16:10
von cofi
Mal als Anregung:
Code: Alles auswählen
>>> import subprocess
>>> import os
>>> path = os.path.expanduser("~/")
>>> output = list()
>>> p = subprocess.Popen(['find', path, '-iname', '*alles*'], stdout=subprocess.PIPE)
>>> out = p.communicate()[0]
>>> output.extend(out.splitlines())
Verfasst: Freitag 1. Januar 2010, 13:29
von ssl17
Vielen Dank, durch die vielen Antwort hab ich`s jetzt kapiert, wie es zu machen ist.
gruß ssl17