def write_yaml(root, file_name, data, overwrite=False): """ Write dictionary data in yaml format. :param root: Directory name. :param file_name: Desired file name. Will automatically add .yaml extension if not given :param data: data to be dumped as yaml format :param overwrite: If True, will overwrite existing files """ if not exists(root): raise MissingConfigException("Parent directory '%s' does not exist." % root) file_path = os.path.join(root, file_name) yaml_file_name = file_path if file_path.endswith( ".yaml") else file_path + ".yaml" if exists(yaml_file_name) and not overwrite: raise Exception("Yaml file '%s' exists as '%s" % (file_path, yaml_file_name)) try: with open(yaml_file_name, 'w') as yaml_file: yaml.safe_dump(data, yaml_file, default_flow_style=False, allow_unicode=True) except Exception as e: raise e
def read_yaml(root, file_name): """ Read data from yaml file and return as dictionary :param root: Directory name :param file_name: File name. Expects to have '.yaml' extension :return: Data in yaml file as dictionary """ if not exists(root): raise MissingConfigException( "Cannot read '%s'. Parent dir '%s' does not exist." % (file_name, root)) file_path = os.path.join(root, file_name) if not exists(file_path): raise MissingConfigException("Yaml file '%s' does not exist." % file_path) try: with codecs.open(file_path, mode='r', encoding=ENCODING) as yaml_file: return yaml.load(yaml_file, Loader=YamlSafeLoader) except Exception as e: raise e