Source code for cgl.core.utils.read_write
import json
import logging
import os
from zipfile import ZipFile, ZIP_DEFLATED
import yaml
[docs]
def unzip(zipped_file, destination, password=None):
"""
Args:
zipped_file:
destination:
password:
Returns:
destination path
"""
logging.info("unzipping %s" % zipped_file)
with ZipFile(zipped_file, "r") as zipObj:
zipObj.extractall(path=destination, pwd=password)
return destination
[docs]
def zip_path(source_path, zip_file):
"""
built to handle both files and folders as "source_path"
Args:
source_path:
zip_file:
Returns:
"""
if os.path.isdir(source_path):
zipf = ZipFile(zip_file, "w", ZIP_DEFLATED)
zip_dir(source_path, zipf)
zipf.close()
[docs]
def zip_dir(folder_path, zip_file):
"""
zipes a file or folder
Args:
folder_path:
zip_file:
Return:
"""
if os.path.isdir(folder_path):
for root, dirs, files in os.walk(folder_path):
for file in files:
zip_file.write(
os.path.join(root, file),
os.path.relpath(
os.path.join(root, file), os.path.join(folder_path, "..")
),
)
[docs]
def load_json(filepath):
"""
Loads a .json file in as a dictionary
Args:
filepath:
Return:
data: dictionary
"""
with open(filepath) as jsonfile:
data = json.load(jsonfile)
return data
[docs]
def load_yaml(filepath):
"""Loads a .yaml file in as a dictionary
Args:
filepath:
Returns:
data: dictionary
"""
if not os.path.isfile(filepath):
logging.error("File not found: %s" % filepath)
return {}
with open(filepath, "r") as yamlfile:
data = yaml.safe_load(yamlfile)
return data
[docs]
def save_json(filepath, data):
"""
Saves a Dictionary as a .json file.
Args:
filepath:
data: dictionary
"""
with open(filepath, "w") as outfile:
json.dump(data, outfile, indent=4, sort_keys=True)
[docs]
class NoAliasDumper(yaml.Dumper):
[docs]
def ignore_aliases(self, data):
return True
[docs]
def save_yaml(filepath, data):
"""
Saves a Dictionary as a .json file.
Args:
filepath:
data: dictionary
"""
with open(filepath, "w", encoding="utf-8") as f:
yaml.dump(
data,
f,
Dumper=NoAliasDumper, # <- key line
sort_keys=False,
allow_unicode=True,
width=1000,
)
[docs]
def save_xml(filepath, data):
"""
saves a dictionary as an xml file
Args:
filepath:
data:
"""
import xmltodict
with open(filepath, "w") as outfile:
outfile.write(xmltodict.unparse(data))
[docs]
def load_xml(filepath):
"""
loads an xml as a dictionary
Args:
filepath:
Returns:
docs: dictionary
"""
import xmltodict
with open(filepath) as xmlfile:
docs = xmltodict.parse(xmlfile.read())
return docs
# def load_style_sheet(style_file="stylesheet.css"):
# """
# Loads the main style sheet for cglumberjack.
#
# Args:
# style_file:
#
# Returns:
# data: string
# """
# file_ = os.path.join(
# __file__.split("cglumberjack")[0], "cglumberjack", "resources", style_file
# )
# f = open(file_, "r")
# data = f.read()
# data.strip("\n")
# return data
[docs]
def load_text_file(file_path):
file_obj = open(file_path, "r", encoding="utf-8")
lines = file_obj.readlines()
file_obj.close()
return lines
[docs]
def save_text_lines(text_array, file_path):
"""
this expects to get typical text that would print normally.
Args:
text_array:
file_path:
"""
file_object = open(file_path, "w")
file_object.writelines(text_array)
file_object.close()