Entendiendo la “cola -f en python”

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á.