Seite 1 von 1

Datei öffnen

Verfasst: Samstag 8. Oktober 2016, 13:53
von pythNeuling
Hallo,
ich bin ganz frischer Anfänger in Python und hätte eine Frage zu Dateien.
Ich möchte eine Datei öffnen, wenn aber dieser Code ausgeführt wird, bekomme ich diese Fehlermeldung.
Als Entwiclungsumgebung benutze ich PyCharm

Code: Alles auswählen

if __name__ == "__main__":
    f = open("python",'r')  # File kommt zurück und wird an f übergeben
    print(f.read())
Traceback (most recent call last):
File "C:/Users/...", line 88, in <module>
f = open("python",'r') # File kommt zurück und wird an f übergeben
FileNotFoundError: [Errno 2] No such file or directory: 'python'

Re: Datei öffnen

Verfasst: Samstag 8. Oktober 2016, 14:05
von Sirius3
@pythNeuling: die Fehlermeldung ist ja eindeutig: die Datei »python« existiert nicht in dem Verzeichnis in dem das Programm ausgeführt wird. Gibt es die Datei überhaupt, und wenn ja, wo liegt sie?

Re: Datei öffnen

Verfasst: Samstag 8. Oktober 2016, 14:06
von snafu
`open()` funktioniert nicht wie eine Shell. Bei einer Shell werden bestimmte Ordner durchsucht, nachdem ein Befehl eingegeben wurde, um ein passendes Programm für den Aufruf zu finden. Bei `open()` wird hingegen nur im aktuellen Ordner nachgesehen (sofern keine absolute Pfadangabe gemacht wurde). Wenn da keine Datei namens `python` vorhanden ist, dann spuckt er diese Fehlermeldung aus.

Re: Datei öffnen

Verfasst: Samstag 8. Oktober 2016, 15:41
von pythNeuling
Sirius3 hat geschrieben:@pythNeuling: die Fehlermeldung ist ja eindeutig: die Datei »python« existiert nicht in dem Verzeichnis in dem das Programm ausgeführt wird. Gibt es die Datei überhaupt, und wenn ja, wo liegt sie?

Die Datei existiert auf dem Desktop.
Gibt es eine überladene Version von der Methode, wo ich den Pfad angeben kann?

Re: Datei öffnen

Verfasst: Samstag 8. Oktober 2016, 16:09
von snafu
Den Pfad gibst du da an, wo jetzt nur der Dateiname steht. Also anstelle von `python` einfach ein `Desktop/python` (falls die Datei wirklich "python" heißt). Überladene Methoden gibt es in Python übrigens nicht. Wir sind hier nicht bei C++ oder Java.

Re: Datei öffnen

Verfasst: Samstag 8. Oktober 2016, 16:11
von Sirius3
@pythNeuling: Dateinamen kann man entweder relativ zum aktuellen Verzeichnis angeben »python« oder absolut »C:/Users/.../Desktop/python«.

Re: Datei öffnen

Verfasst: Samstag 8. Oktober 2016, 23:55
von pythNeuling
Vielen Dank für eure Hilfe. Ich hab versucht eure Tipps umzusetzen, leider spuckt der Compiler diese Fehlermeldung aus.
Auf dem Desktop befindet sich eine Textdatei mit dem Namen test.txt
Ich hab es auch schon mit zwei Schrägstrichen anstatt einem versucht.

Code: Alles auswählen

if __name__ == "__main__":
    f = open('C:\Users\\pythNeuling\Desktop\test','r') 
    print(f.read())
File "C:/Users/pythNeuling/PycharmProjects/Grundlagen/testcode.py", line 88
f = open('C:\Users\\pythNeuling\Desktop\test','r') # File kommt zurück und wird an f übergeben
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

Re: Datei öffnen

Verfasst: Sonntag 9. Oktober 2016, 09:25
von Sirius3
@pythNeuling: Der Backslash '\' leitet Escape-Sequenzen ein, unter anderem \t für Tab \n für Newline \r für Return und eben auch \U für 32bit Unicodenummern. Besser ist es, als Verzeichnistrenner '/' zu verwenden, wie es Python ja auch in den Fehlermeldungen macht.

Code: Alles auswählen

if __name__ == "__main__":
    with open('C:/Users/pythNeuling/Desktop/test', 'r') as f:
        print(f.read())

Re: Datei öffnen

Verfasst: Sonntag 9. Oktober 2016, 12:37
von snafu
Entweder Slashes statt Backslashes (auch unter Windows möglich) oder die Form r'dein\pfad\zur\datei.txt'. Die letzte Form ist ein Raw-String, bei dem Backslashes nicht mehr als Teil von Steuersequenzen interpretiert werden, sondern als normale Zeichen.

Re: Datei öffnen

Verfasst: Sonntag 9. Oktober 2016, 20:17
von harryberlin
weiterhin solltest du auch die erweiterung (.txt) mit dazu nehmen.