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
os.walk
[url=http://www.proandkon.com]proandkon.com[/url]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.
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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
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.
Code: Alles auswählen
a = walk('dir')
Code: Alles auswählen
for i in a:
print i
[url=http://www.proandkon.com]proandkon.com[/url]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, Du kannst eben drüber iterieren; zusammen mit dem fnmatch-Modul kommst Du an die gewünschten Dateien:
Würde jetzt aus dem aktuellen Verzeichnis alle Dateien finden, die mit ".py" anfangen.
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
...:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
sehe ich das richtig, ich kann den 'Inhalt' von a nur einmal auflisten?
[url=http://www.proandkon.com]proandkon.com[/url]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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?mzh hat geschrieben:sehe ich das richtig, ich kann den 'Inhalt' von a nur einmal auflisten?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@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.
ok danke für den hinweis.
[url=http://www.proandkon.com]proandkon.com[/url]