Was ist der beste Weg, um eine Datei für den exklusiven Zugriff in Python zu öffnen?

Was ist der eleganteste Weg, um dieses Problem zu lösen:

  • öffnen einer Datei zum Lesen, aber nur, wenn es nicht bereits geöffnet ist für schreiben
  • öffnen einer Datei zum schreiben, aber nur, wenn es nicht schon zum Lesen oder schreiben geöffnet

Den built-in-Funktionen arbeiten wie diese

>>> path = r"c:\scr.txt"
>>> file1 = open(path, "w")
>>> print file1
<open file 'c:\scr.txt', mode 'w' at 0x019F88D8>
>>> file2 = open(path, "w")
>>> print file2
<open file 'c:\scr.txt', mode 'w' at 0x02332188>
>>> file1.write("111")
>>> file2.write("222")
>>> file1.close()

scr.txt enthält nun '111'.

>>> file2.close()

scr.txt überschrieben und enthält nun '222' (auf Windows, Python 2.4).

Die Lösung sollte funktionieren in dem selben Prozess (wie im Beispiel oben), als auch, wenn ein anderer Prozess die Datei geöffnet hat.
Es ist bevorzugt, wenn ein Programm abstürzt, wird nicht halten Sie das Schloss öffnen.

Kommentar zu dem Problem
wollen Sie exklusive öffnen von Dateien innerhalb Ihrer eine Anwendung (so dass Sie nicht überschreiben einer Datei die änderungen mit anderen Datei-Objekt verweist auf derselben Stelle)? Oder meinst du einen global-lock? Kommentarautor: kender

InformationsquelleAutor der Frage mar10 | 2008-10-09

Schreibe einen Kommentar