Alle Datein im Ordner lesen und schreiben

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
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Wie kann ich alle Dateien in einem Ordner nacheinander Lesen bzw den Text filtern ohne das ich jedesmal einen Namen aufrufen muss.

Ich möchte aus allen Dateien "\" dieses Zeichen, welches sich am Anfang von einigen Zeilen von einer Datei befindet rausfiltern und die Datei wieder abspeichern.

Im Ordner sind zb 23 Textdateien.

Danke.
Gruss
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Code: Alles auswählen

>>> os.listdir('/')
['home', 'proc', 'bin', 'dev', 'mnt', 'sys', 'media', 'lib', 'vmlinuz', 'selinux', 'root', 'tmp', 'boot', 'initrd.img', 'opt', 'usr', 'sbin', 'lost+found', 'srv', 'etc', 'cdrom', 'var']
>>> 
Verbinde dies mit einer `for`-Schleife.

EDIT: War vielleicht etwas knapp. Schau dir außerdem `str.replace()` an. Und `open()`
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Was ist hier an der Syntax falsch?
Es kommt eine Fehlermeldung.

Code: Alles auswählen

import os
os.listdir("d:\Forth\src\*.f")
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

funkheld hat geschrieben:Was ist hier an der Syntax falsch?
Es kommt eine Fehlermeldung.

Code: Alles auswählen

import os
os.listdir("d:\Forth\src\*.f")
Mittlerweile solltest Du doch mal wissen, dass es Python-Code-Blöcke hier gibt. Außerdem solltest Du die Fehlermeldung auch posten - auch das solltest Du doch mal gelernt haben!

Zum Fehler: Der Backslash ist ein Escape-Zeichen - Du musst raw-Strings verwenden, um das zu unterbinden:

Code: Alles auswählen

import os
os.listdir(r"d:\Forth\src\*.f")
Zudem suchst Du eher das glob-Modul! (Iirc wurde Dir das auch schon mal empfohlen!)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Das funktioniert jetzt erstmal.

os.listdir("d:/forth/src/ *.f")

Mit dem Filter "*.f" geht es nicht. Welches Symbol muss ich dafür nehmen?

Code: Alles auswählen

import os
test=os.listdir("d:/forth/src/")
print test[8]
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

wie Hyperion bereits geschrieben hat, kannst du dafür das glob Modul verwenden:

Code: Alles auswählen

>>> glob.glob('*.gif')
['1.gif', 'card.gif']
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

funkheld hat geschrieben:os.listdir("d:/forth/src/ *.f")

Mit dem Filter "*.f" geht es nicht. Welches Symbol muss ich dafür nehmen?
Lies die Dokumentation zu os.listdir. Eine Verarbeitung von Filtern ist nicht Bestandteil dieser Funktion.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Schade, dass es in diesem Board keine "Badgets" gibt; bei einigen Leuten bräuchte man mal so Sachen wie "lernresistent", "Hinweis resistent" usw :mrgreen:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

Jammer nicht. ;) Du kannst ihn einfach ignorieren, da gibt es hier sogar eine Funktion für, schließlich zwingt Dich niemand, auf seine Fragen zu antworten.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben:Du kannst diese Leute einfach ignorieren, da gibt es hier sogar eine Funktion für, schließlich zwingt Dich niemand, auf Fragen missliebiger Nutzer zu antworten.
"Missliebig" ist hier nicht wirklich passend. Ich glaube eher, dass einige das gar nicht richtig mitbekommen, was andere an Hinweisen geben und daher immer wieder dieselben Schwierigkeiten haben (sei es bei einem konkreten Problem oder beim Vorgehen). Evtl. überlesen sie es wirklich einfach, ohne bewusst darauf zu achten. :K
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten