Was ist der beste Weg, um eine Datei als Lese- / Schreibzugriff zu öffnen, wenn sie vorhanden ist oder nicht, erstellen Sie sie und öffnen Sie sie als Lese- / Schreibzugriff? Nach dem, was ich gelesen habe, file = open('myfile.dat', 'rw')
sollte ich das tun, oder?
Es funktioniert bei mir nicht (Python 2.6.2) und ich frage mich, ob es sich um ein Versionsproblem handelt oder ob es nicht so funktionieren soll oder was.
Unter dem Strich brauche ich nur eine Lösung für das Problem. Ich bin neugierig auf die anderen Sachen, aber alles was ich brauche ist eine schöne Art den Eröffnungsteil zu machen.
Das einschließende Verzeichnis war für Benutzer und Gruppe beschreibbar, nicht für andere (ich bin auf einem Linux-System ... also Berechtigungen 775 mit anderen Worten), und der genaue Fehler war:
IOError: Keine solche Datei oder kein solches Verzeichnis.
quelle
file
vorhanden sind.Antworten:
Sie sollten
open
mit demw+
Modus verwenden:quelle
w
schneidet vorhandene Datei ab. docs: Modi'r+'
,'w+'
und'a+'
öffnen Sie die Datei für die Aktualisierung (beachten Sie, dass'w+'
Schneidet die Datei).open('myfile.dat', 'w')
ist dann genug.Der Vorteil des folgenden Ansatzes besteht darin, dass die Datei am Ende des Blocks ordnungsgemäß geschlossen wird , selbst wenn unterwegs eine Ausnahme ausgelöst wird. Es ist äquivalent zu
try-finally
, aber viel kürzer.Die Methode seek () legt die aktuelle Position der Datei fest.
quelle
filename
?Es wird empfohlen, Folgendes zu verwenden:
quelle
Ändern Sie "rw" in "w +"
Oder verwenden Sie 'a +' zum Anhängen (ohne Löschen vorhandener Inhalte)
quelle
r + bedeutet Lesen / Schreiben
quelle
Seit 3.4 Python Sie sollten verwenden
pathlib
zu „berühren“ -Dateien.Es ist eine viel elegantere Lösung als die in diesem Thread vorgeschlagenen.
Gleiches gilt für Verzeichnisse:
quelle
touch
aktualisiert die zuletzt geänderte Zeit bei Verwendung.touch
über die Befehlszeile unter Linux, daher gehe ich davon aus, dass es sich um ein beabsichtigtes Verhalten handelt.Meine Antwort:
quelle
Beispiel:
Ich hoffe das hilft. [FYI ich benutze Python Version 3.6.2]
quelle
open('myfile.dat', 'a')
funktioniert für mich, ganz gut.In py3k wird Ihr Code erhöht
ValueError
:in Python-2.6 wird es ausgelöst
IOError
.quelle
Verwenden:
Hinweis: Dateien müssen geschlossen werden, nachdem Sie sie geöffnet haben. Mit dem Kontext-Manager können Sie Python dies für Sie erledigen lassen.
quelle
Was möchten Sie mit Datei machen? Nur darauf schreiben oder sowohl lesen als auch schreiben?
'w'
,'a'
ermöglicht das Schreiben und erstellt die Datei, wenn sie nicht vorhanden ist.Wenn Sie aus einer Datei lesen müssen, muss die Datei vorhanden sein, bevor Sie sie öffnen können. Sie können seine Existenz testen, bevor Sie es öffnen, oder einen Versuch / eine Ausnahme verwenden.
quelle
Ich denke es ist
r+
nichtrw
. Ich bin nur ein Anfänger, und das habe ich in der Dokumentation gesehen.quelle
Setzen Sie w + zum Schreiben der Datei, kürzen Sie, falls vorhanden, r +, um die Datei zu lesen, erstellen Sie eine, wenn sie nicht vorhanden ist, aber nicht schreiben (und geben Sie null zurück), oder ein +, um eine neue Datei zu erstellen oder an eine vorhandene anzuhängen.
quelle
Sie möchten also Daten in eine Datei schreiben, aber nur, wenn diese noch nicht vorhanden sind?.
Dieses Problem lässt sich leicht lösen, indem der wenig bekannte x-Modus zum Öffnen () anstelle des üblichen w-Modus verwendet wird. Zum Beispiel:
Wenn sich die Datei im Binärmodus befindet, verwenden Sie den Modus xb anstelle von xt.
quelle
Wenn Sie es zum Lesen und Schreiben öffnen möchten, gehe ich davon aus, dass Sie es beim Öffnen nicht abschneiden möchten und die Datei direkt nach dem Öffnen lesen möchten. Das ist also die Lösung, die ich benutze:
quelle
Vielleicht hilft das
Importieren Sie zuerst das OS-Modul in Ihre Py-Datei
Erstellen Sie dann eine Variable mit dem Namen save_file und setzen Sie sie auf die Datei, die Sie in diesem Fall als HTML- oder TXT-Datei erstellen möchten
Definieren Sie dann eine Funktion, die mithilfe der Dateimethode os.path.is überprüft, ob eine Datei vorhanden ist. Andernfalls wird eine Datei erstellt
und zuletzt die Funktion aufrufen
quelle
quelle