import os

def read_file(path, callback=None):
  if os.path.exists(path):
    with open(path, 'r') as f:
      data = callback(f)
    return data
  else:
    return None

def save_file(path, data, callback=None, *args, **kwargs):
  if not os.path.exists(path):
    os.makedirs(os.path.dirname(path), exist_ok=True)

  with open(path, 'w') as f:
    callback(data, f, *args, **kwargs)
