import os import json import sys def folder_to_json(path): tree = {} base_folder_name = os.path.basename(os.path.normpath(path)) # Get the base folder name # Ensure the path doesn't return an empty string or dot. base_folder_name = base_folder_name if base_folder_name else os.path.basename(os.getcwd()) for root, dirs, files in os.walk(path): # Get the relative path of the root directory relative_path = os.path.relpath(root, path) # Use base folder name for root, and append relative path for subfolders key = base_folder_name if relative_path == '.' else os.path.join(base_folder_name, relative_path) # Only add the folder if there are files if files: tree[key] = files return tree def generate_combined_tree(paths): combined_tree = {} for path in paths: # Add folder tree for each path combined_tree.update(folder_to_json(path)) return combined_tree if __name__ == "__main__": # Get the list of folder paths from command-line arguments folder_paths = sys.argv[1:] if not folder_paths: print("Please provide at least one folder path.") sys.exit(1) # Check if 'tree.json' exists if os.path.exists('tree.json'): print("'tree.json' already exists. No file was created.") sys.exit(0) # Generate the combined folder tree for all specified paths combined_folder_tree = generate_combined_tree(folder_paths) # Write the combined JSON structure to a file named tree.json with open('tree.json', 'w') as f: json.dump(combined_folder_tree, f, indent=4) print("Folder tree successfully written to 'tree.json'.")