Renommer un fichier dans PyTown
Dans le monde virtuel de PyTown, chaque document ou fichier numérique est stocké dans des répertoires et sous-répertoires représentés sous forme de dictionnaires imbriqués. Le maire de la ville, M. CeePy, a la lourde responsabilité de maintenir tous ces documents organisés, correctement nommés et facilement accessibles. Un jour, M. CeePy s'est aperçu qu'un fichier très important était mal nommé, et il doit le corriger de toute urgence.
Votre mission est d'aider M. CeePy en écrivant un programme Python récursif pour rechercher ce fichier spécifique dans la structure de répertoires en dictionnaires imbriqués et le renommer s'il est trouvé. Ici, les clés représentent les noms de dossiers ou de fichiers, et les valeurs sont soit des dictionnaires représentant des sous-dossiers, soit des chaînes de caractères représentant les extensions de fichiers.
La première ligne de l'entrée est la structure du dictionnaire imbriqué. Ce dictionnaire représente les répertoires comme des clés et soit un dictionnaire, soit une chaîne de caractères comme valeurs. Les chaînes de caractères sont des extensions de fichiers qui, une fois combinées avec leurs clés (noms de fichiers), forment le nom complet du fichier.
La deuxième ligne de l'entrée est le nom de fichier existant (avec son extension) qui doit être trouvé et renommé.
La troisième ligne de l'entrée est le nouveau nom que le fichier existant doit recevoir après le renommage.
Le programme doit renvoyer la structure du dictionnaire imbriqué modifiée avec le fichier renommé. Si le fichier n'est pas trouvé dans la structure des répertoires, le programme doit afficher
File not found
.Entrée | Sortie |
{"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"important": ".pdf", "todo": ".txt"}}
important.pdf
urgent.pdf | {"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"urgent": ".pdf", "todo": ".txt"}} |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB