Reguläre Ausdrücke auf Verzeichnis Pfaden

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
milexy86
User
Beiträge: 22
Registriert: Freitag 7. Februar 2014, 16:33

Hallo Python Fans,

ich bin mit Python noch ziemlich am Anfang. Habe eine Frage:

Angenommen ich habe eine Text Datei in der Verzeichnispfade angegeben sind, beispielspweise:

D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\gemeinsames
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\konfiguration\
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\hand_ausgestreckt
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\klatschen
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib\config
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib\protocol
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\hand_schuetteln
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\geneiriert\A-Achse
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\geneiriert\B-Achse

Ich schreibe zurzeit ein Script in dem ich unter anderem sagen möchte: Sobald in der Text Datei im Pfad der Ordner "Algorithmen" gefunden wurde, sollen alle globalen Pfade der Unterverzecihnise vom Ordner "Algorithmen" in einer weiteren Textdatei ausgegeben werden. Das würde in diesem Beispiel dan so aussehen:

D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\hand_ausgestreckt
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\klatschen
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib\config
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib\protocol
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\hand_schuetteln

In diesem Fall würde ich so etwas wie reguläre ausdrücke verwenden um den Script sagen zu können: "alles was hinter Algorithmen steht, gebe in ein text file aus".

Kann mir jemand sagen wie man das in python mittels regulären ausdrücken (oder pattern filter) realisieren könnte?

Danke im vorraus!
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo milexy86,
sobald Du im Anfängertutorial Deiner Wahl bis Schleifen und Stringverarbeitung gekommen bist, sollte sich Deine Frage von alleine beantwortet haben.
milexy86
User
Beiträge: 22
Registriert: Freitag 7. Februar 2014, 16:33

Hi,

also ich habe den folgenden code geschrieben (es muss auch ohne reguläre ausdrücke gehen):

Code: Alles auswählen

import os

obj_in = open("file_to_read.txt", "r")
obj_out = open ("file_to_output.txt", "w")

if  "Algorithmen" in "file_to_read.txt":
	obj_out.write(line)
	
obj_in.close()
obj_out.close()
Die erzeugte Textdatei (file_to_output.txt) ist aber leer? Was habe ich hir falsch gemacht? Das ergebniss müsste so aussehen:

D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\hand_ausgestreckt
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\klatschen
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib\config
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\lib\protocol
D:\Meine_Projekte\Software\Gestenerkennung\Software_Kinect\Quellcode\Algorithmen\hand_schuetteln

Vielen Danke!
jqz4n
User
Beiträge: 21
Registriert: Sonntag 2. Februar 2014, 19:26

Du schreibst in die entsprechende Datei eine Variable "line", die du jedoch nirgens definierst.
( Es fehl ein line = obj_in.read() )
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Code: Alles auswählen

if  "Algorithmen" in "file_to_read.txt":
	obj_out.write(line)
Hast Du mal überprüft, ob Du jemals in den Rumpf der Bedingung reinkommst?

Das kannst Du entweder über ein (temporäres) ``print``-Statement im Block lösen, oder den Code-Teil in einer Shell einfach mal austesten:

Code: Alles auswählen

"Algorithmen" in "file_to_read.txt"
> False
Du prüfst nicht den *Inhalt* einer Datei auf das Vorkommen eines Wortes, sondern den *Namen* der Datei ;-)

BTW: Dateien solltest Du immer mittels ``with`` öffnen:

Code: Alles auswählen

with open(...) as file_handle:
    # file_handle kannst Du im Block benutzen
    # es wird *automatisch* geschlossen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
milexy86
User
Beiträge: 22
Registriert: Freitag 7. Februar 2014, 16:33

ouh ja :oops:

Danke!
Antworten