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.

2voto

Stephen Ngethe Punkte 926

Sie wollen also Daten in eine Datei schreiben, aber nur, wenn diese noch nicht existiert?

Dieses Problem lässt sich leicht lösen, indem man den wenig bekannten x-Modus für open() anstelle des üblichen w-Modus verwendet. Zum Beispiel:

 >>> with open('somefile', 'wt') as f:
 ...     f.write('Hello\n')
...
>>> with open('somefile', 'xt') as f:
...     f.write('Hello\n')
...
 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: 'somefile'
  >>>

Wenn die Datei im Binärmodus ist, verwenden Sie den Modus xb anstelle von xt.

-3voto

Ganesh Jat Punkte 25
import os, platform
os.chdir('c:\\Users\\MS\\Desktop')

try :
    file = open("Learn Python.txt","a")
    print('this file is exist')
except:
    print('this file is not exist')
file.write('\n''Hello Ashok')

fhead = open('Learn Python.txt')

for line in fhead:

    words = line.split()
print(words)

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