in Verzeichnis nach String suchen

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
Alp
User
Beiträge: 7
Registriert: Freitag 4. Juli 2008, 18:37

Guten Abend,
ich möchte eine kleine Suchfunktion machen, aber schaff das nicht ganz.
Bsp:
Ordner: projects
In welchem Ordner wollen Sie suchen?
Eingabe: projects
Was möchten sie finden?
Eingabe: "import Tkinter"

Und dann soll er im Verzeichnis "projects" in jeder Datei nachschauen ob "import Tkinter" irgendwo in der Datein drinnen steht. Sollte dies der Fall sein, soll der Dateiname angezeigt werden.

So weit schaffe ich es auch, nur möchte ich, dass auch die Unterverzeichnisse von "projects" durchsucht werden. Wie funktioniert das?

Schon im vorraus vielen Dank für eure Hilfe.

Mfg Alp
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Gibts schon, nennt sich "grep" :)

Entweder du nutz os.path.isdir um zu überprüfen, ob ein neuer Pfad (also projects und der Name der Datei / des Ordners) ein Ordner ist und wendest wieder os.listdir darauf an. Oder du nutzt os.walk().
Alp
User
Beiträge: 7
Registriert: Freitag 4. Juli 2008, 18:37

Viele Dank :)

Dann schau ich mir mal "grep" an :wink:
problembär

Und dann soll er im Verzeichnis "projects" in jeder Datei nachschauen ob "import Tkinter" irgendwo in der Datein drinnen steht. Sollte dies der Fall sein, soll der Dateiname angezeigt werden.

Code: Alles auswählen

grep -r "import Tkinter" projects
Interessant ist zusätzlich auch "-i", um Groß-/Kleinschreibung zu ignorieren.

Gruß
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

str1442 hat geschrieben:Gibts schon, nennt sich "grep" :)
Wenn man Langeweile hat kann man dass doch trotzdem lösen: http://paste.pocoo.org/show/110529/(Der Versuch den Code zu verstehen oder vielleicht sogar nur zu betrachten könnte bei einigen zu erheblichen gesundheitlichen Schäden führen)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und ``functional`` zu implementieren bleibt als zusätzliche Aufgabe für den Leser übrig, ja?

Achja, ich finde für Suche in Quelltexten ack ein gutes Stück angenehmer als grep.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Leonidas hat geschrieben:Und ``functional`` zu implementieren bleibt als zusätzliche Aufgabe für den Leser übrig, ja?
Sonst wäre es ja zu einfach ;) http://paste.pocoo.org/show/110594/
Alp
User
Beiträge: 7
Registriert: Freitag 4. Juli 2008, 18:37

Ich hätte zum grep noch eine Frage:
Bei mir kommt die Fehlermeldung "access denied"
Woran kann das liegen?

Mfg Alp
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Alp hat geschrieben:Ich hätte zum grep noch eine Frage:
Bei mir kommt die Fehlermeldung "access denied"
Woran kann das liegen?

Mfg Alp
Du hast wohl keine Berechtigung in das Verzeichnis zu wechseln! (Unpreviligierter Benutzer eben)

Aber ist das wirklich die komplette Fehlermeldung? Ich würde das mal stark bezweifeln ...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Alp
User
Beiträge: 7
Registriert: Freitag 4. Juli 2008, 18:37

Hyperion hat geschrieben:
Aber ist das wirklich die komplette Fehlermeldung? Ich würde das mal stark bezweifeln ...
Deine Zweifel sind berechtigt, tut mir Leid:
IOError: [Errno 13] Permission denied 'Python'

(Python ist der Ordner)
Danke, das gefällt mir von den ganzen Scripts am Besten :P
problembär

von den ganzen Scripts am besten
Von den ganzen Scripts vielleicht, aber UNIX-"grep", bzw. sein OpenSource-Pendant, ist eines der ausgereiftesten, leistungsfähigsten, optimiertesten und am besten getesteten Tools überhaupt.
Kann man schlecht bestreiten. Man muß nur halt damit umgehen können.

Gruß
Antworten