2013-02-20 5 views
6

Wie Python Blick zu haben und sehen, ob es eine Datei ist, es braucht und wenn man nicht schaffen?Wie überprüft Python, ob eine Datei existiert und erstellt sie, wenn dies nicht der Fall ist?

Grundsätzlich möchte ich Python nach meinem Dateinamen KEEP-IMPORTANT.txt suchen, aber wenn ich meine App mit py2app erstellen, funktioniert es nicht, weil es die Datei nicht hat. Wenn ich versuche, die Datei zu erstellen, wird es nicht funktionieren (ich denke, weil Python es erzeugen muss).

Ich mag Python überprüfen, ob die Datei so vorhanden ist, dass, wenn es nicht dann ist es die Datei nicht erzeugen, sonst tut es.

+0

Was möchten Sie mit der Datei machen? Überschreibe es? Lies es? Anhängen? Beide? –

+2

"Wenn ich versuche, die Datei zu erstellen, wird es nicht funktionieren (ich denke, weil Python es erzeugen muss)." Wohl kaum. Sie sollten weitere Details hinzufügen und den entsprechenden Code anzeigen. –

+0

Die Datei muss existieren, das ist alles – user2093174

Antwort

7

Similar question

Dies ist die beste Art und Weise:

try: 
    with open(filename) as file: 
     # do whatever 
except IOError: 
    # generate the file 

Es auch ist os.path.exists(), aber dies ein Sicherheitsproblem sein kann.

+0

ersonnen ich ein Beispiel dieses Verfahren auf Fehler zu prüfen. In Python 2.7 lösen Berechtigungsfehler IOError aus. Ich habe den Lesezugriff für eine Testdatei widerrufen, erlaubte aber das Schreiben. Der Versuch, die Datei zu lesen, erzeugte einen IOError und ich konnte ihn mit dieser Ausnahme überschreiben. Dies wird in Python 3 nicht funktionieren, da das Lesen der Datei PermissionError erzeugt. Dies ist wahrscheinlich ein Nischenszenario, das unwahrscheinlich ist. Ich frage mich, auf welche anderen Arten IOError mit einer vorhandenen Datei auftreten könnte. – Octipi

+0

Wenn Sie keine rw-Berechtigungen für die Datei haben, versuchen Sie nicht, es zu überspielen, sondern nur einen anderen IOError auszulösen? –

+0

In Python 3 würde es PermissionError auslösen. Ich habe das unwahrscheinliche Szenario getestet, dass Sie Schreibberechtigungen, aber keine Leseberechtigungen hatten. In diesem Fall wurde für python 2.7 beim Lesen der Datei IOError ausgelöst, aber ich konnte trotzdem mit Schreibrechten darauf schreiben. – Octipi

7

Diese Einzeiler wird prüfen, ob die Datei vorhanden ist, und es schaffen, wenn es nicht der Fall ist.

open("KEEP-IMPORTANT.txt", "a") 
+0

+1 für die Datei und keine Fehler machen - aber was auch frühere Bits der Datei zu löschen? – cutrightjm

Verwandte Themen