If the file is a .blend you can use an [application handler][1] import bpy from bpy.app.handlers import persistent @persistent def load_handler(dummy): print("Load Handler:", bpy.data.filepath) bpy.app.handlers.load_post.append(load_handler) [1]: http://www.blender.org/api/blender_python_api_2_73_release/bpy.app.handlers.html#persistent-handler-example For other file types there is no callback provided, you could iterate over all text files for t in bpy.data.texts: 'check for previously created' -> exec if new and add to list. and check for new entries triggered by a timer. Related: - http://blender.stackexchange.com/questions/21034/my-custom-timer-is-cancelled-when-loading-a-blend-file - http://blender.stackexchange.com/questions/9420/run-an-internal-script-from-a-handler/9422#9422 - http://blender.stackexchange.com/questions/2642/is-it-possible-to-get-render-time-per-tile/2649#2649