You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.9 KiB
Python
90 lines
2.9 KiB
Python
import json
|
|
import os
|
|
import sys
|
|
|
|
|
|
# This allows for importing from the localization and util directories NOTE: Auto importing tools will also prepend the import paths with "tools." this will not work and needs to be removed from import paths
|
|
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
|
|
|
from localization.parseDictionary import parse_dictionary
|
|
|
|
|
|
def createMappedJsonFileDictionary(inputDir, fileName):
|
|
"""
|
|
This function creates a dictionary that maps sub-directory names to their corresponding JSON file data.
|
|
|
|
Args:
|
|
inputDir (str): The path to the input directory containing sub-directories.
|
|
fileName (str): The name of the JSON file to be read for each sub-directory.
|
|
|
|
Returns:
|
|
tuple: A tuple containing two dictionaries:
|
|
- The first dictionary maps sub-directory names (with hyphens replaced by underscores) to their JSON data.
|
|
- The second dictionary maps sub-directory names (with hyphens replaced by underscores) to the file paths of their JSON files.
|
|
"""
|
|
|
|
# Get a list of all directories in the input directory
|
|
files = [
|
|
name
|
|
for name in os.listdir(inputDir)
|
|
if os.path.isdir(os.path.join(inputDir, name))
|
|
]
|
|
|
|
# Initialize dictionaries to hold JSON data and file paths
|
|
dictionary = dict()
|
|
dictionaryKeyFiles = dict()
|
|
|
|
# Iterate over each sub-directory
|
|
for filePath in files:
|
|
# Replace hyphens in the directory name with underscores to create the dictionary key
|
|
key = filePath.replace("-", "_")
|
|
|
|
# Construct the full path to the JSON file in this sub-directory
|
|
filePath = os.path.join(inputDir, filePath, fileName)
|
|
|
|
# Store the file path in the dictionaryKeyFiles dictionary
|
|
dictionaryKeyFiles[key] = filePath
|
|
|
|
# Open the JSON file and load the data into the dictionary
|
|
localDict = parse_dictionary(filePath)
|
|
|
|
if localDict is not None:
|
|
dictionary[key] = localDict
|
|
|
|
# Return the dictionaries containing the JSON data and file paths
|
|
return dictionary, dictionaryKeyFiles
|
|
|
|
|
|
def makeDirIfNotExists(filePath):
|
|
"""
|
|
This function creates a directory if it does not already exist.
|
|
|
|
Args:
|
|
dirPath (str): The path to the directory to create.
|
|
"""
|
|
os.makedirs(os.path.dirname(filePath), exist_ok=True)
|
|
|
|
|
|
def writeFile(filePath, data):
|
|
"""
|
|
This function writes data to a file. Creating its parent directories if they do not exist.
|
|
|
|
Args:
|
|
filePath (str): The path to the file to write the data to.
|
|
data (str): The data to write to the file.
|
|
"""
|
|
makeDirIfNotExists(filePath)
|
|
with open(filePath, "w", encoding='utf-8') as file:
|
|
file.write(data)
|
|
|
|
|
|
def removeFileIfExists(filePath):
|
|
"""
|
|
This function removes a file if it exists.
|
|
|
|
Args:
|
|
filePath (str): The path to the file to remove.
|
|
"""
|
|
if os.path.exists(filePath) and os.path.isfile(filePath):
|
|
os.remove(filePath)
|