Seite 1 von 1
os.walk
Verfasst: Dienstag 10. August 2010, 09:44
von mzh
Hallo zusammen
Ich brauche ein Skript, dass mir von einem Topdirectory aus in alle subdirectories geht und dort in relevanten '.arc' files eine Zeile ausliest und diese, zusammen mit dem Dateipfad, so dass ich weiss in welchem File die Zeile stand, in eine Übersicht schreibt.
Ich bin gerade auf os.walk() gestossen, was mir einen Grossteil der Arbeit abzunehmen scheint. Dann brauche ich jetzt die grep() Funktion einzubauen und das File-Schreiben.
Bin gerne offen für weiteren hilfreichen Input in diesem Zusammenhang. Was gibt es da denn sonst noch für hilfreiche Tools? Gibt es evtl. ein Pythonequivalent für 'grep'`?
Besten Dank für Hinweise
Re: os.walk
Verfasst: Dienstag 10. August 2010, 09:54
von Hyperion
Wüßte ich jetzt nicht auf Anhieb. Du könntest mal bei pypi.python.org gucken, ob es da ein Modul gibt.
Ansonsten sehe ich auf Anhieb zwei Möglichkeiten:
- Du öffnest die Dateien und guckst, ob beim Iterieren über alle Zeilen der Suchausdruck im String enthalten ist
- Du durchsuchst die geöffnete Datei mit einem RegExp.
Ohne in die Datei reinzugucken, geht es halt nicht.
Re: os.walk
Verfasst: Dienstag 10. August 2010, 09:59
von mzh
ich habe mal den Rückgabewert von walk() an eine Variable zugewiesen.
'a' ist dann ein generator object. Ich hab noch nicht viel damit gemacht, aber was kann ich denn mit dem Generator object machen?
scheint mir nicht viel anderes zu tun als was eine list auch tun würde.
Re: os.walk
Verfasst: Dienstag 10. August 2010, 10:11
von Hyperion
Naja, Du kannst eben drüber iterieren; zusammen mit dem fnmatch-Modul kommst Du an die gewünschten Dateien:
Code: Alles auswählen
In [5]: from os import walk
In [6]: from fnmatch import fnmatch
In [9]: for dirpath, dirnames, filenames in walk("."):
...: for filename in filenames:
...: if fnmatch(filename, "*.py"):
...: print filename
...:
Würde jetzt aus dem aktuellen Verzeichnis alle Dateien finden, die mit ".py" anfangen.
Re: os.walk
Verfasst: Dienstag 10. August 2010, 10:33
von mzh
sehe ich das richtig, ich kann den 'Inhalt' von a nur einmal auflisten?
Re: os.walk
Verfasst: Dienstag 10. August 2010, 10:36
von Hyperion
mzh hat geschrieben:sehe ich das richtig, ich kann den 'Inhalt' von a nur einmal auflisten?
Was meinst Du mit "a"? Den Namen "a" aus Deinem obigen Post? Nö. Kannst den Aufruf doch ständig wiederholen - oder was meinst Du genau?
Re: os.walk
Verfasst: Dienstag 10. August 2010, 10:45
von BlackJack
@mzh: Das siehst Du richtig. Beziehungsweise hat `a` ja gar keinen Inhalt. Das ist ja der Witz von so einem Iterator, dass der "Inhalt" nicht zu einem Zeitpunkt komplett vorhanden sein muss, sondern die Elemente erst bei Bedarf erzeugt werden.
Re: os.walk
Verfasst: Dienstag 10. August 2010, 10:47
von mzh
ok danke für den hinweis.