Öffnen aller Dateien aus einem Pfad

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
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Hallo Leute!
Hab gestern mit Python angefangen
Bin ganz begeistert von den Möglichkeiten.

Hab wieder mal ein Problem:

Ich habe eine unbestimmte Anzahl von Textdateien in einem Ordner liegen. In jeder Datei steht ein Wertepaar.

Wie kann ich mit einem Skript, alle Dateien öffnen und die darin enthaltenen Wertepaare in einer Liste zusammenführen?

Ich hoffe ich habe mich nicht zu kompliziert ausgedrückt.

Recht herzlichen Dank für eure Unterstützung.

Johannes
Buell
User
Beiträge: 90
Registriert: Samstag 29. Oktober 2005, 14:17

alle Dateinamen mit Erweiterung txt aus dem Pfad auslesen und in Liste schreiben, siehe dazu os.listdir glaube ich.

mit for schleife nacheinenander dateien aus oben erstellter liste öffnen und werte in neue liste schreiben.

sehr hilfreich dabei append zum hinzufügen eines neuen wertes in die liste.

jetzt solltest du dein problem gelöst bekommen...
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mit

Code: Alles auswählen

for eintrag in os.lisdir("ein/pfad")
bekommst du eine schleife ueber alle Eintrage im Verzeichnis ein/pfad.

Dateien oeffnen und lesen geht mit

Code: Alles auswählen

datei = open(eintrag, 'r') 
inhalt = datei.readline()
datei.close()
eine Liste befuellen geht mit:

Code: Alles auswählen

liste = []
liste.append(inhalt)
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Ooh, da war jemand schneller :o
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Danke.

werds mal versuchen zu implementieren.

lg

Johannes
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Code: Alles auswählen

import os
liste = []

for eintrag in os.listdir("C:\\python\\code\\2202_tests\\werte"):
    datei = open(eintrag, 'r') 
    inhalt = datei.readline() 
    datei.close()
    liste.append(inhalt)

print liste,
Das funktioniert irgendwie nicht:
Fehlermeldung lautet:

Traceback (most recent call last):
File "C:/Dokumente und Einstellungen/Gebert.Johannes/Desktop/python/code/2202_tests/open_several_files.py", line 5, in -toplevel-
datei = open(eintrag, 'r')
IOError: [Errno 2] No such file or directory: 'a.txt'

Es befinden sich 4 Dateien im Pfad: a.txt, b.txt, c.txt und d.txt


Bitte um Hilfe!

Danke

Johannes
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Ach ja, und wenn du nur Textdateien oeffnen willst, kann dir

Code: Alles auswählen

dateiname = "bla.txt"
dateiname.endswith(".txt")
helfen.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

War schon wieder jemand schneller...

naja, in eintrag steht zum beistpiel bla.txt, obwohl du wahrscheinlich
C:\\python\\code\\2202_tests\\werte\\bla.txt oeffnen willst.

Und in dem Verzeichnis, wo du das Skript ausfuehrst, gibt's dann kein bla.txt.

du musst dann os.path.join(pfad, bla.txt) verwenden
Zuletzt geändert von Rebecca am Donnerstag 23. Februar 2006, 15:37, insgesamt 1-mal geändert.
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Hallo Rebecca!

Ich hab im Moment nur .txt Files im Suchordner.
Hast du den letzten Post nur vollständigkeitshalber gepostet, oder als Antwort auf meinen letzten Post?

Danke.
Johannes
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

"eintrag" enthält nur "a.txt". Deshalb musst du, wie rebecca es geschrieben hat, noch mit dem Pfad kombinieren.

Einfacher ist aber vielleicht

Code: Alles auswählen

import glob
for eintrag in glob.glob("C:\\pfad\\zu\\den\\dateien\\*.txt"):
  ...
dann enthält eintrag immer den kompletten Pfad
Rockstar
User
Beiträge: 15
Registriert: Samstag 12. November 2005, 17:31
Kontaktdaten:

Code: Alles auswählen

import os
liste = []
pfad = "C:\\python\\code\\2202_tests\\werte\\"

for eintrag in os.listdir(pfad):
	if os.path.isfile(pfad+eintrag):
		datei = open(pfad+eintrag, 'r')
		inhalt = datei.readline()
		datei.close()
		liste.append(inhalt)
print liste
So hätt ich gedacht.
Antworten