954 Stimmen

open() in Python erstellt keine Datei, wenn sie nicht existiert

Wie öffne ich eine Datei am besten als Lese-/Schreibdatei, wenn sie existiert, oder, wenn sie nicht existiert, erstelle ich sie und öffne sie als Lese-/Schreibdatei? Nach dem, was ich gelesen habe, file = open('myfile.dat', 'rw') sollte dies tun, richtig?

Es funktioniert nicht für mich (Python 2.6.2) und ich frage mich, ob es ein Versionsproblem ist, oder nicht so funktionieren soll oder was.

Im Endeffekt brauche ich einfach eine Lösung für das Problem. Ich bin neugierig auf die anderen Dinge, aber alles, was ich brauche, ist eine schöne Möglichkeit, den Eröffnungsteil zu tun.

Das umschließende Verzeichnis war für den Benutzer und die Gruppe schreibbar, nicht für andere (ich bin auf einem Linux-System... also Rechte 775 in anderen Worten), und der genaue Fehler war:

IOError: keine solche Datei oder Verzeichnis.

2 Stimmen

Wie S. Mark bereits erwähnte, sollte dies "einfach funktionieren". Ist das umschließende Verzeichnis beschreibbar?

8 Stimmen

Muksie's Antwort unten gearbeitet (und baloo's auch für diese Angelegenheit), aber nur der Vollständigkeit halber, die umschließende Dir war schreibbar von Benutzer und Gruppe, nicht andere (im auf einem Linux-System... so Berechtigungen 775 in anderen Worten), und der genaue Fehler war IOError: keine solche Datei oder Verzeichnis. danke für die Hilfe Jungs.

4 Stimmen

Stellen Sie sicher, dass alle führenden Mappen de la file existiert.

8voto

SilentGhost Punkte 285785

open('myfile.dat', 'a') funktioniert bei mir einwandfrei.

in py3k wirft Ihr Code ValueError :

>>> open('myfile.dat', 'rw')
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    open('myfile.dat', 'rw')
ValueError: must have exactly one of read/write/append mode

in Python-2.6 löst es IOError .

7voto

Angel Poppy Punkte 85

Ich denke, es ist r+ , nicht rw . Ich bin nur ein Anfänger, und das ist, was ich in der Dokumentation gesehen habe.

6voto

user49117 Punkte 776

Was wollen Sie mit der Datei machen? Nur schreiben oder sowohl lesen als auch schreiben?

'w' , 'a' erlaubt das Schreiben und erstellt die Datei, wenn sie nicht existiert.

Wenn Sie aus einer Datei lesen wollen, muss die Datei existieren, bevor Sie sie öffnen. Sie können das Vorhandensein der Datei vor dem Öffnen prüfen oder ein try/except verwenden.

4voto

Gustavo6046 Punkte 392

Setzen Sie w+ ein, um die Datei zu schreiben und abzuschneiden, wenn sie existiert, r+, um die Datei zu lesen und eine zu erstellen, wenn sie nicht existiert, aber nicht zu schreiben (und null zurückzugeben), oder a+, um eine neue Datei zu erstellen oder an eine bestehende Datei anzuhängen.

4voto

Wenn Sie die Datei zum Lesen und Schreiben öffnen wollen, gehe ich davon aus, dass Sie sie beim Öffnen nicht abschneiden wollen und dass Sie die Datei direkt nach dem Öffnen lesen können wollen. Dies ist also die Lösung, die ich verwende:

file = open('myfile.dat', 'a+')
file.seek(0, 0)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X