Umbenennen einer Datei in PyTown
In der virtuellen Welt von PyTown werden alle digitalen Dokumente oder Dateien in Verzeichnissen und Unterverzeichnissen gespeichert, die als verschachtelte Dictionaries dargestellt sind. Der Bürgermeister der Stadt, Herr CeePy, trägt die große Verantwortung, all diese Dokumente organisiert, korrekt benannt und leicht zugänglich zu halten. Eines Tages bemerkte Herr CeePy, dass eine sehr wichtige Datei falsch benannt war, und er muss dies dringend korrigieren.
Deine Aufgabe ist es, Herrn CeePy zu helfen, indem du ein rekursives Python-Programm schreibst, das in der verschachtelten Dictionary-Verzeichnisstruktur nach dieser speziellen Datei sucht und sie, falls gefunden, umbenennt. Hier repräsentieren die Schlüssel Ordnernamen oder Dateinamen, und die Werte sind entweder Dictionaries, die Unterordner darstellen, oder Strings, die Dateierweiterungen angeben.
Die erste Zeile der Eingabe ist die verschachtelte Dictionary-Struktur. Dieses Dictionary stellt Verzeichnisse als Schlüssel und entweder ein Dictionary oder einen String als Wert dar. Die Strings sind Dateierweiterungen, die zusammen mit ihren Schlüsseln (Dateinamen) den vollständigen Dateinamen ergeben.
Die zweite Zeile der Eingabe ist der bestehende Dateiname (mit seiner Erweiterung), der gefunden und umbenannt werden muss.
Die dritte Zeile der Eingabe ist der neue Dateiname, in den die bestehende Datei umbenannt werden soll.
Das Programm soll die modifizierte verschachtelte Dictionary-Struktur mit der umbenannten Datei zurückgeben. Wenn die Datei in der Verzeichnisstruktur nicht gefunden wird, soll das Programm
File not found
ausgeben.Eingabe | Ausgabe |
{"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