Seite 1 von 1

Reguläre Ausdrücke auf Verzeichnis Pfaden

Verfasst: Freitag 7. Februar 2014, 17:07
von milexy86
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!

Re: Reguläre Ausdrücke auf Verzeichnis Pfaden

Verfasst: Freitag 7. Februar 2014, 17:49
von Sirius3
Hallo milexy86,
sobald Du im Anfängertutorial Deiner Wahl bis Schleifen und Stringverarbeitung gekommen bist, sollte sich Deine Frage von alleine beantwortet haben.

Re: Reguläre Ausdrücke auf Verzeichnis Pfaden

Verfasst: Montag 10. Februar 2014, 16:50
von milexy86
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!

Re: Reguläre Ausdrücke auf Verzeichnis Pfaden

Verfasst: Montag 10. Februar 2014, 17:06
von jqz4n
Du schreibst in die entsprechende Datei eine Variable "line", die du jedoch nirgens definierst.
( Es fehl ein line = obj_in.read() )

Re: Reguläre Ausdrücke auf Verzeichnis Pfaden

Verfasst: Montag 10. Februar 2014, 17:09
von Hyperion

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.

Re: Reguläre Ausdrücke auf Verzeichnis Pfaden

Verfasst: Montag 10. Februar 2014, 17:10
von milexy86
ouh ja :oops:

Danke!