Seite 1 von 1

Problem beim Auslesen einer Datei

Verfasst: Mittwoch 24. Juni 2009, 22:57
von py-mule
Hallo zusammen,
in einem Programm möchte ich eine Datei auslesen, von der ich ganz sicher weiß, daß sie in Windows (XP) unter dem von mir angegebene Pfad existiert. Leider bekomme ich eine Fehlermeldung.

Code: Alles auswählen

f = open ("C:\\Programme\\Mein_Programm\\%s\\zX\\%s" %(name(), datnr_z), "r")
variable = f.read()
f.close
Die Fehlermeldung:

Code: Alles auswählen

IOError: [Errno 2] No such file or directory: "C:\\Programme\\Mein_Programm\\nnn\\zX\\z1.txt"
Wenn ich die letzte Datei, also z1.txt, mit "os.path.isfile" überprüfe, bekomme ich die Rückmeldung FALSE, obwohl der Pfad im Win-Explorer zu sehen ist.

Wenn ich mit os.listdir überprüfe bekomme ich z1.txt. Merkwürdig oder?

Erkennt vieleicht jemand (m)einen Fehler oder weiß jemand, wie ich damit besser umgehen kann?

Danke und viele Grüße
py-mule

Verfasst: Donnerstag 25. Juni 2009, 06:27
von Hyperion
Du willst os.path.join nutzen für das Zusammenbasteln von Pfaden!

Außerdem sollte man Dateien niemals unbedacht öffnen, daher hier mal meine Variante:

Code: Alles auswählen

from os.path import join as pathjoin

filepath = pathjoin("C:/Programme/Mein_Programm", name(), "zX", datnr_z)
with open(filepath, "r") as infile:
    data = infile.read()
name() ist übrigens kein guter Funktionsname. Wie wäre es mit get_name() o.ä.?

Verfasst: Donnerstag 25. Juni 2009, 07:31
von py-mule
IDLE meckert:

open hinter with

Code: Alles auswählen

with open(filepath, "r") as infile:
    data = infile.read()
sei "invalid syntax"

Verfasst: Donnerstag 25. Juni 2009, 08:02
von Rebecca
In Python 2.5 musst du noch

Code: Alles auswählen

from __future__ import with_statement 
in die reste Zeile schreiben, erst ab 2.6 geht es ohne.

Verfasst: Donnerstag 25. Juni 2009, 08:17
von py-mule
JA, jetzt funktioniert join,

ich bekomme aber die gleiche Fehlermeldung:

"No such file or directory"

Verfasst: Donnerstag 25. Juni 2009, 11:05
von py-mule
So, nun habe ich nochmal etwas herumgespielt, dabei ist mir aufgefallen, daß in der Liste, die ich von os.listdir zurückbekomme zwar die gewünschte Datei drin steht, aber mit einem Leerzeichen davor:

[' z1.txt', ' z2.txt']

kann es vielleicht damit zusammenhängen?

Wie kann ich das beheben?

Verfasst: Donnerstag 25. Juni 2009, 11:15
von EyDu
Warum probierst du es nicht einfach aus?

Strings haben eine "strip"-Methode. Und wie man einen String ohne das erste Zeichen bekommt, das findet man zur Not auch im Tutorial raus.

Verfasst: Donnerstag 25. Juni 2009, 11:16
von py-mule
Ok. Habs herausgefunden:

Das Leerzeichen war das Problem und zwar im Abschnitt in dem die Datei geschrieben wird. Da habe ich beim Ummodeln ausversehen ein Leerzeichen reingedrückt, wo keines hingehört.

Trotzdem vielen Dank.
Und ich habe auch noch pathjoin kennen gelernt.

Viele Grüße
py-mule