He creado un script de python muy simple:
def read_then_follow(file): for line in file: yield line while True: line = file.readline() if not line: time.sleep(1.0) continue yield line for line in read_then_follow("some_file.txt"): print line
El archivo “some_file.txt” contiene algunas líneas de texto, que se escribirán en la pantalla cuando ejecute el script. Si luego agrego una línea al archivo con echo "line" >> some_file.txt
, la línea se imprimirá en la pantalla dentro de 1 segundo. Pero: si abro el archivo en vim , agrego una línea en la parte inferior y guardo, el script deja de funcionar. No escribe la nueva línea escrita en vim en pantalla ni responde a más comandos de echo ...
Para su información, actualmente estoy usando python 2.6.6 en Ubuntu 10.10.
(Supongo que estás en un sistema operativo similar a Unix).
Guardar en vim creará realmente un nuevo archivo con el mismo nombre en el disco. El identificador de archivo que tiene el script aún apunta al archivo antiguo , que ya no tiene una entrada de directorio. Si su secuencia de comandos finaliza, el contador de referencia del archivo anterior bajará a 0 y el archivo se eliminará.