Seite 1 von 1

Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 17:44
von JeanZ
Die Überschrift sagt schon alles: ich kann keine Dateien mit open() öffnen.

Gibt es da irgendwo eine Sperre die ich lösen muss? Oder liegt es doch an mir?

Danke Euch

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 17:46
von EyDu
Wahrscheinlich existiert die Datei einfach nicht, du hast den Namen falsch geschrieben oder sie befindet sich in einem anderen Ordner.

Sebastian

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 17:49
von Kiffi
JeanZ hat geschrieben:Die Überschrift sagt schon alles: ich kann keine Dateien mit open() öffnen.
Teilbereiche von Windows-Pfaden werden aufgrund des Backslash nicht
selten als Escape-Sequenzen interpretiert.

Zeig doch bitte mal den Aufruf.

Grüße ... Kiffi

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 18:17
von Xynon1
Schreib dochmal wie du sie versuchst zu öffnen und denk daran das du auch die nötigen (ich vermute mal) ntfs-rechte auf die Datei hast.

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:11
von JeanZ
>>> open('C:\\neu.txt')
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
open('C:\\neu.txt')
IOError: [Errno 2] No such file or directory: 'C:\\neu.txt'
>>>

Mit dem Editor lässt sie sich ganz normal bearbeiten.

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:16
von nomnom
JeanZ hat geschrieben:>>> open('C:\\neu.txt')
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
open('C:\\neu.txt')
IOError: [Errno 2] No such file or directory: 'C:\\neu.txt'
>>>

Mit dem Editor lässt sie sich ganz normal bearbeiten.
Ich denke man muss (oder sollte?) dem `open()` eine Variable zuweisen. Und vielleicht musst du als Datei das hier angeben:
C:\\\\neu.text
Ich meine, normalerweise sind es zwei Backslashs, und die muss man ja maskieren. Aber wahrscheinlich irre ich mich ;)

EDIT: Ich meine, normalerweise ist es doch so:
C:\\irgend\ein\pfad\zu\einer\datei.txt
Oder nicht?

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:21
von Xynon1
nomnom, du hast völlig recht, entweder nutzt man / oder immer einen doppelten \\, welcher als ein \ gewertet wird.
Da \ immer eine Escapesequenz einleitet und nicht im String gewertet wird, also ist in dem Fall \\\\ völlig richtig.

Wenn du den Pfad also so angibst muss du es so machen:
C:\\\\irgend\\ein\\pfad\\zu\\einer\\datei.txt

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:26
von DaMutz
Xynon1 hat geschrieben:nomnom, du hast völlig recht, entweder nutzt man / oder immer einen doppelten \\, welcher als ein \ gewertet wird.
Da \ immer eine Escapesequenz einleitet und nicht im String gewertet wird, also ist in dem Fall \\\\ völlig richtig.
Das bezweifle ich aber, denn bei mir geht folgendes:

Code: Alles auswählen

Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> open('C:\\eula.1028.txt')
<open file 'C:\eula.1028.txt', mode 'r' at 0x023C0C28>
das folgende geht aber auch:

Code: Alles auswählen

>>> open('C:\\\\eula.1028.txt')
<open file 'C:\\eula.1028.txt', mode 'r' at 0x023C0AC8>

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:30
von cofi
DaMutz hat geschrieben:
Xynon1 hat geschrieben:nomnom, du hast völlig recht, entweder nutzt man / oder immer einen doppelten \\, welcher als ein \ gewertet wird.
Da \ immer eine Escapesequenz einleitet und nicht im String gewertet wird, also ist in dem Fall \\\\ völlig richtig.
Das bezweifle ich aber, denn bei mir geht folgendes
`\e` ist eben keine Escape-Sequenz, insofern hat Xynon1 unrecht, denn nicht alle Sequenzen, die mit `\` anfangen, sind Escape-Sequenzen, `\n` aber sehr wohl.

Ich werfe mal Raw-Strings in die Runde, mit denen man das Problem einfach umschifft:

Code: Alles auswählen

>>> r"C:\\neu"
'C:\\\\neu'

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:30
von Xynon1
Hast du das auch nochmal in Python 3.1 ?
Ich kann das für Windows leider nicht testen.

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:38
von EyDu
Xynon1 hat geschrieben:Hast du das auch nochmal in Python 3.1 ?
Ich kann das für Windows leider nicht testen.
Hier (in diesem Thread) steht nirgends Code, welcher von einer Python-Version abhängig ist.

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:40
von Xynon1
Bezog sich noch auf DaMutz Beispiel,
Ich dachte Strings sind in Python 3 nun unicode Objekte, insofern ist das doch etwas anders, oder ?

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 19:44
von DaMutz
ich habe nur Python 2.6 installiert. Die raw-String Version ist aber sicher die Beste. Dateien öffne ich eigentlich immer damit (und natürlich mit dem 'with'). Es hat mich auch erstaunt, dass meine Version funktioniert, aber jetzt mit cofi's Erklärung ist es klar :wink:

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 20:00
von JeanZ
Wenn ich eine Datei neu anlege und beschreibe ist das Öffnen kein Problem:

>>> f = open('neu1.txt', 'w')
>>> f.write('hallo')
5
>>> f.close()
>>> f = open('neu1.txt')
>>> print(f.read())
hallo
>>>

Gibt es da ein Rechtsproblem?

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 20:07
von JeanZ
Alles klar!

Ich habe die Datei als neue Textdatei mit dem namen 'neu.txt' angelegt. Daraus wurde dann 'neu.txt.txt' gemacht!

Re: Python3.1: open() -> File not found / Windows

Verfasst: Mittwoch 17. November 2010, 20:08
von JeanZ
Alles klar!

Ich habe die Datei als neue Textdatei mit dem namen 'neu.txt' angelegt. Daraus wurde dann 'neu.txt.txt' gemacht!

Danke für die Hilfsbereitschaft.