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