Какой самый элегантный способ решить эту проблему:
- открыть файл для чтения, но только если он еще не открыт для записи
- открыть файл для записи, но только если он еще не открыт для чтения или записи
Встроенные функции работают следующим образом
>>> 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 теперь содержит '111'.
>>> file2.close()
scr.txt был перезаписан и теперь содержит "222" (в Windows, Python 2.4).
Решение должно работать внутри одного и того же процесса (например, в примере выше), а также когда другой процесс открыл файл.
Предпочтительно, если программа сбоя не будет блокировать блокировку.