os.system() in Liste

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
ssl17
User
Beiträge: 3
Registriert: Donnerstag 31. Dezember 2009, 14:00

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?
BlackJack

@ssl17: Du suchst das `subprocess`-Modul. Und die Doku zu `os.system()` solltest Du vielleicht auch mal lesen.
ssl17
User
Beiträge: 3
Registriert: Donnerstag 31. Dezember 2009, 14:00

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..
Benutzeravatar
Klip
User
Beiträge: 98
Registriert: Donnerstag 10. August 2006, 20:39

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
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

man kann mit Python auch direkt suchen ohne subprocess, mit os.walk
the more they change the more they stay the same
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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())
ssl17
User
Beiträge: 3
Registriert: Donnerstag 31. Dezember 2009, 14:00

Vielen Dank, durch die vielen Antwort hab ich`s jetzt kapiert, wie es zu machen ist.

gruß ssl17
Antworten