Datei öffnen

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
pythNeuling
User
Beiträge: 12
Registriert: Samstag 8. Oktober 2016, 13:46

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'
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@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?
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

`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.
pythNeuling
User
Beiträge: 12
Registriert: Samstag 8. Oktober 2016, 13:46

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?
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@pythNeuling: Dateinamen kann man entweder relativ zum aktuellen Verzeichnis angeben »python« oder absolut »C:/Users/.../Desktop/python«.
pythNeuling
User
Beiträge: 12
Registriert: Samstag 8. Oktober 2016, 13:46

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
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@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())
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
harryberlin
User
Beiträge: 227
Registriert: Donnerstag 17. Dezember 2015, 12:17

weiterhin solltest du auch die erweiterung (.txt) mit dazu nehmen.
empty Sig
Antworten