En Windows, ¿cómo abrir para escribir un archivo ya abierto para escritura por otro proceso?

Estoy intentando abrir un archivo de registro que se mantiene abierto por otro proceso y eliminar las primeras líneas. En Unix simplemente haría unaos.open('/tmp/file.log', os.O_NONBLOCK) y eso me acercaría más a mi objetivo.

Ahora estoy atascado con Windows y necesito rotar este registro de alguna manera sin finalizar la aplicación que contiene el archivo. ¿Es esto posible?

Al principio consideré abrir un identificador de archivo en la ubicación donde la aplicación esperaba que fuera el registro y simplemente actuar como una tubería hacia un identificador de archivo en Python, pero tampoco pude encontrar ninguna forma de hacerlo en Windows.

También pensé en simplemente mover el archivo regularmente y dejar que la aplicación vuelva a crear el archivo, pero ya que essiendo usado por otro proceso Eso no hace mucho bien.

Pensamiento sobreO_SHLOCK también, pero de nuevo, eso es Unix y no Windows. Así que busqué mmap en el archivo y espero que sea un poco más flexible, pero eso no me llevó a ninguna parte.

import mmap
import contextlib
import time

with open(r'test.log', 'r+') as f:
    with contextlib.closing(mmap.mmap(f.fileno(), 0)) as m:
        while 1:
            line = m.readline()
            if len(line) > 0:
                print line
            time.sleep(0.5)

Esto hace que la aplicación no pueda acceder al archivo porque Python lo tiene (y viceversa).

Vino a pensar ensignal.SIGHUP pero eso tampoco existe en Windows, así que volvemos al punto uno.

Estoy atascado y lo he intentado todo. ¿Python puede ayudarme aquí o necesito cambiar mi idioma?

Respuestas a la pregunta(2)

Su respuesta a la pregunta