import json import os 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 with open(filePath, "r") as jsonFile: dictionary[key] = json.load(jsonFile) # 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") 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)