code: def write_file (filename, content, backup=False, callback=None):
      
      # first write in a temp file
      f = file(filename+".tmp", 'wb')
      if callback is None:
          f.write(content)
      else:
          callback(f, content)
      f.close()
      # move orig file to backup
      if os.path.exists(filename):
          os.rename(filename, filename+".bak")
      # move temp file to orig
      os.rename(filename+".tmp", filename)
      # remove backup
      if not backup and os.path.exists(filename+".bak"):
          os.remove(filename+".bak")
docs: Overwrite a possibly existing file with new content. Do this
      in a manner that does not leave truncated or broken files behind.
      @param filename: name of file to write
      @type filename: string
      @param content: file content to write
      @type content: string
      @param backup: if backup file should be left
      @type backup: bool
      @param callback: non-default storage function
      @type callback: None or function taking two parameters (fileobj, content)