Problem beim Auslesen einer Datei

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
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.ä.?
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

IDLE meckert:

open hinter with

Code: Alles auswählen

with open(filepath, "r") as infile:
    data = infile.read()
sei "invalid syntax"
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

JA, jetzt funktioniert join,

ich bekomme aber die gleiche Fehlermeldung:

"No such file or directory"
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

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?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Zuletzt geändert von EyDu am Donnerstag 25. Juni 2009, 11:17, insgesamt 1-mal geändert.
Das Leben ist wie ein Tennisball.
py-mule
User
Beiträge: 58
Registriert: Samstag 3. Januar 2009, 10:42

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
Antworten