Seite 1 von 1

Öffnen aller Dateien aus einem Pfad

Verfasst: Donnerstag 23. Februar 2006, 14:58
von keboo
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

Verfasst: Donnerstag 23. Februar 2006, 15:11
von Buell
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...

Verfasst: Donnerstag 23. Februar 2006, 15:15
von Rebecca
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)

Verfasst: Donnerstag 23. Februar 2006, 15:16
von Rebecca
Ooh, da war jemand schneller :o

danke

Verfasst: Donnerstag 23. Februar 2006, 15:17
von keboo
Danke.

werds mal versuchen zu implementieren.

lg

Johannes

Problem

Verfasst: Donnerstag 23. Februar 2006, 15:28
von keboo

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

Verfasst: Donnerstag 23. Februar 2006, 15:31
von Rebecca
Ach ja, und wenn du nur Textdateien oeffnen willst, kann dir

Code: Alles auswählen

dateiname = "bla.txt"
dateiname.endswith(".txt")
helfen.

Verfasst: Donnerstag 23. Februar 2006, 15:34
von Rebecca
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

Verfasst: Donnerstag 23. Februar 2006, 15:35
von keboo
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

Verfasst: Donnerstag 23. Februar 2006, 15:39
von Joghurt
"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

Verfasst: Freitag 24. Februar 2006, 14:45
von Rockstar

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.