txt-auslese fehler

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

Startest du das Programm auch aus dem Ordner?
Das Leben ist wie ein Tennisball.
12344321
User
Beiträge: 14
Registriert: Freitag 6. Januar 2012, 13:51

ja, das mache ich
BlackJack

@12344321: Das kann nicht sein, denn dann würde die Datei dort auch gefunden werden. Also entweder stimmt der Dateiname nicht, oder das Arbeitsverzeichnis des Prozesses ist nicht das in dem die Datei liegt.
12344321
User
Beiträge: 14
Registriert: Freitag 6. Januar 2012, 13:51

hier ist der ordner: http://imageshack.us/photo/my-images/823/bildig.png/

aber immer noch der gleiche fehler :(
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Lass dir doch mal den aktuellen Ordner vor dem Öffnen der Datei ausgeben (wie zum Beispiel mit ``print(os.getcwd())``).
12344321
User
Beiträge: 14
Registriert: Freitag 6. Januar 2012, 13:51

das habe ich gemacht, dann stand da C:\windows\system32
ich habe woerter.txt in den pfad kopiert, aber da steht immer noch der gleiche fehler:(
BlackJack

@12344321: Ich würde an Deiner Stelle dann mal schauen welche Endung die 'woerter.txt'-Datei hat. Die heisst bestimmt tatsächlich 'woerter.txt.txt'.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

12344321 hat geschrieben:das habe ich gemacht, dann stand da C:\windows\system32
ich habe woerter.txt in den pfad kopiert, aber da steht immer noch der gleiche fehler:(
Im mit PATH definierten Pfad werden ausschließlich ausführbare Programme gesucht.

Dann gehen wir das Problem halt anders an und sagen deine Programm explizit aber dynamisch wo denn die Datei liegt. Da die Datei im gleichen Ordner wie dein Programm liegt ist das sogar recht einfach.

In jedem Python-Programm/Modul kannst du dir über den Bezeichner __file__ den aktuellen Namen des Skripts inklusive dem komplettem Pfad dorthin holen. Dann brauchen wir hier nur noch den Namen des Programms durch den Namen der zu öffnenden Datei ersetzen. Am flexibelsten und einfachsten geht das, wenn du mit os.path.dirname das Verzeichnis ermittelst. Anschließend setzt du dann mit os.path.join den ermittelten Pfad mit deinem Dateinamen zusammen und kannst dann die Datei öffnen.

Code: Alles auswählen

import os.path

folder = os.path.dirname(__file__)
filename = os.path.join(folder, 'woerter.txt')
with open(filename, 'r') as fp:
    [...]
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

12344321 hat geschrieben:das habe ich gemacht, dann stand da C:\windows\system32
ich habe woerter.txt in den pfad kopiert, aber da steht immer noch der gleiche fehler:(
Wird in dem Bild, das Du hochgeladen hast, der komplette Inhalt des Ordners angezeigt? Dann ist die Sache völlig klar, auch wenn der Name des Ordners in Deinem Bild leider nicht zu sehen ist. Das kann keinesfalls der Ordner "c:\windows\system32" sein, sonst wäre schon einiges zusammengebrochen. Und dort gehören Deine eigenen Dateien ja auch wahrhaftig nicht hin.

Also startest Du Dein Skript eben nicht aus dem Verzeichnis heraus, in dem es liegt, also sucht es nach der Textdatei an der falschen Stelle. Dass Du anscheinend Dateiendungen verstecken lässt (es müsste ja wohl "latein.py" heißen, oder nicht?), weckt zusätzlich noch den Verdacht, dass sie, wie schon von BlackJack angemerkt, eine doppelte Endung hat, warum auch immer. Dieses Verstecken bekannter Dateierweiterungen ist ein Unfug, den man Windows besser früher als später austreibt.
12344321
User
Beiträge: 14
Registriert: Freitag 6. Januar 2012, 13:51

da kommt jetzt immer so ein fehler:
, dass ie liste outdated ist?
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

12344321 hat geschrieben:da kommt jetzt immer so ein fehler:
, dass ie liste outdated ist?
Bekanntlich fliegen über Ostern nicht nur die Glocken, sondern auch die Glaskugeln nach Rom. Meine ist schon seit Palmsonntag unterwegs. Deshalb bitte ein paar mehr Details:

Ich gehe mal davon aus, dass der Fehler irgendwann nach dem Start des Programms kommt, und dass nicht einfach auf dem Bildschirm die Worte stehen:
", dass ie liste outdated ist?"

1. Wie startest Du das Programm genau? Klick im Explorer? Startmenü / Ausführen? Konsolenfenster (auch "Command prompt" oder "Eingabeaufforderung" genannt und die empfehlenswerteste Methode)? Noch anders? Wenn Du dabei etwas eingibst, bitte die genaue Eingabe!

2. Bitte die komplette Fehlermeldung kopieren. Sollte sie in einem Windows-Dialogfenster erscheinen, in dem Du nichts kopieren kannst, dann bitte einen Screenshot von diesem Fenster.

3. Kannst Du erkennen, an welchem Punkt das Programm gerade ist, wenn die Meldung kommt (je mehr Druckanweisungen es enthält, desto eher ist das möglich)?

Danach sehen wir weiter.
Antworten