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

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
JeanZ
User
Beiträge: 11
Registriert: Samstag 13. November 2010, 14:26
Wohnort: Duisburg

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

Wahrscheinlich existiert die Datei einfach nicht, du hast den Namen falsch geschrieben oder sie befindet sich in einem anderen Ordner.

Sebastian
Das Leben ist wie ein Tennisball.
Benutzeravatar
Kiffi
User
Beiträge: 6
Registriert: Samstag 13. November 2010, 11:32

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
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
JeanZ
User
Beiträge: 11
Registriert: Samstag 13. November 2010, 14:26
Wohnort: Duisburg

>>> 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.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

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?
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

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>
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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'
Zuletzt geändert von cofi am Mittwoch 17. November 2010, 19:31, insgesamt 1-mal geändert.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Hast du das auch nochmal in Python 3.1 ?
Ich kann das für Windows leider nicht testen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Bezog sich noch auf DaMutz Beispiel,
Ich dachte Strings sind in Python 3 nun unicode Objekte, insofern ist das doch etwas anders, oder ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

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:
JeanZ
User
Beiträge: 11
Registriert: Samstag 13. November 2010, 14:26
Wohnort: Duisburg

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?
JeanZ
User
Beiträge: 11
Registriert: Samstag 13. November 2010, 14:26
Wohnort: Duisburg

Alles klar!

Ich habe die Datei als neue Textdatei mit dem namen 'neu.txt' angelegt. Daraus wurde dann 'neu.txt.txt' gemacht!
JeanZ
User
Beiträge: 11
Registriert: Samstag 13. November 2010, 14:26
Wohnort: Duisburg

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.
Antworten