title: How to capture ctrl-c for killing a Flask python script
body: <p>I have the following script which just boots up a web server serving a dynamically created website. In order to get dynamic data the script opens a file to read the data.</p>
  
  <p>My concern is how can I catch CTRL-C command for killing the python script so I can close the file before script thread is killed.</p>
  
  <p>I tried the following couple things but neither work:</p>
  
  <pre><code>from flask import Flask, render_template
  import time
  
  # Initialize the Flask application
  app = Flask(__name__)
  
  fileNames = {}
  fileDesc = {}
  for idx in range(1,4):
      fileNames["name{}".format(idx)] = "./name" + str(idx) + ".txt"
      fileDesc["name{}".format(idx)] = open(fileNames["name{}".format(idx)],'r')
  
  try:
      @app.route('/')
      def index():
          # code for reading data from files
          return render_template('index.html', var1 = var1)
  
      @app.errorhandler(Exception)
      def all_exception_handler(error):
          print("Closing")
          for key, value in fileDesc:
              val.close()
          print("Files closed")
  
  
      if __name__ == '__main__':
          app.run(
              host="192.168.0.166",
              port=int("8080"),
              debug=True
          )
  
  except KeyboardInterrupt:
      print("Closing")
      for key, value in fileDesc:
          val.close()
      print("Files closed")
  </code></pre>
  
  <p>Thanks in advance.</p>