Seite 1 von 1

Shell Befehl in Python implementieren

Verfasst: Dienstag 19. April 2005, 13:23
von Gast
Hallo allerseits,
ich bin neu in python und würde gerne wissen wie man zum beispiel den shell befehl find in python implementiert...

ich glaube man muss das modul os importieren oder?

aber wie kann ich zum beispiel den befehl find "irgendwas -name " dann implementieren?

Danke euch!

Verfasst: Dienstag 19. April 2005, 13:59
von Leonidas
Öhm ja, du brauchst os.path, os.walk, optparse und musst dann die Funktionalität bereitstellen. Also durch alle möglichen Ordner durchgehen und nach dieser Datei suchen.

Die Antwort ist etwas ungenau, aber deine Frage ist es auch.

Verfasst: Dienstag 19. April 2005, 16:21
von jens
Um den Linux-Befehl "find" zu verwenden nimm popen oder subprocess... Beispiele sind im Forum zu finden...

Verfasst: Freitag 22. April 2005, 09:14
von Gast
Hallo,
mit os.system('find . -name "*.html"')
kommt die ausgabe...

allerdings würde ich gerne alle html files in eine liste speichern...nur geht das nicht mit
html_list = os.system('find . -name "*.html"')

jemand eine Idee?

Verfasst: Freitag 22. April 2005, 09:47
von Mr_Snede

Code: Alles auswählen

>>> import os
>>> alle_dateien = os.listdir(os.getcwd())
>>> print alle_dateien
['pybrowser.py', 'todo11.pyc', 'tkdu-1.4.py', 'dateimanager.py', 'fuplo.py', ... ]
os.getcwd() = Das Verzeichnis aus dem das Programm gestartet wurde.
Mit os.path.splitext() kommst du an die Dateiendung heran:

Code: Alles auswählen

>>> import os
>>> os.path.splitext("/Verzeichnis/Datei.Endung")
('/Verzeichnis/Datei', '.Endung')
Jetzt kannst du eine Schleife über "alle_dateien" laufen lassen und mit "splitext()" dir die gewünschten .html Dateien heraussuchen.

cu Sebastian

Edit: Habe überlesen, dass du nicht nur im aktuellen Verzeichnis suchen möchtest. :-(
Da ist os.walk wie Leonidas sagte richtig.

Verfasst: Freitag 22. April 2005, 12:04
von Gast
Vielen dank...das funktioniert !

würde gerne auf dem html file einen grep befehl ausführen lassen...also mit os.system('grep muster datei')

allerdings muss ich hier die datei rein schreiben ...wenn ich aber die laufvariable der for schleife (also die einzelnen html files) reinschreibe sagt mir der interpretre er kennt die datei nicht....

gibt es dafür eine Lösung?

Verfasst: Freitag 22. April 2005, 12:34
von jens
Poste mal deinen Code....

Verfasst: Freitag 22. April 2005, 12:36
von Gast

Code: Alles auswählen

for file in all_files:

        test_fl = os.path.splitext(path+"/"+file)
        if test_fl[1] != ".html":
                continue
        else: 
                sec_labels_lst = os.system('grep wickedlabel file') # hier kann der grep nicht funktionieren weil file ja die laufvariable ist....
                print sec_labels_lst


Edit (Leonidas): Code in Python Tags gesetzt.

Verfasst: Freitag 22. April 2005, 12:42
von jens
Geht's so?

Code: Alles auswählen

for file in all_files:
    if os.path.splitext( test_fl )[1] != ".html":
        continue

    test_fl = os.path.join( path, file )

    commando = 'grep wickedlabel %s' % test_fl
    
    sec_labels_lst = os.system( commando )
    print sec_labels_lst

Verfasst: Freitag 22. April 2005, 12:48
von Gast
öha...
danke!

es geht........man sieht ich muss noch vieeeel lernen.

Super danke!