Angenommen habe ich eine set
von Dateioperationen umbenennen:Umbenennen Satz von Dateien, wenn alte Namen Konflikt mit neuen Namen in Python3
renames={(current_1,new_1),(current_2,new_2),...}
Es wird garantiert, dass die Dateien current_1,current_2,...
vorhanden ist und dass die neuen Dateien new_1,new_2,...
sind einzigartig. Alle Dateien sind Instanzen von pathlib.Path
.
Sie können jedoch Dateien sein, die derzeit als eine andere Datei benannt werden müssen umbenannt werden: d. H. Es kann eine Instanz von current_i==new_j
existieren.
Was wäre eine elegante Möglichkeit, die Umbenennungsoperationen zu implementieren? Beachten Sie, dass ich nicht einfach über renames
iterieren und jede Datei umbenennen kann, da ich für eine Situation vorbereitet sein muss, in der der neue Name mit dem Namen einer Datei kollidiert, die noch umbenannt werden soll.
Ich bin speziell auf der Suche nach einer Implementierung in Python3, und ich möchte umbenannt werden, um eine set
in der Form oben gehalten werden.
ist eine einfache Möglichkeit, vorübergehend die Dateien Präfix:
temporal_prefix="a big string guaranteed not to appear in file names"
for current,new in renames:
current.rename(current.with_name(temporal_prefix+current.name))
for current,new in renames:
current.with_name(temporal_prefix+current.name).rename(new)
Aber das ist nicht sehr elegant, und es erfordert die benötigten Dateioperationen zu verdoppeln. Und ein gutes Präfix zu finden, kann an sich schon ein Problem sein. Ist es möglich, dies in einer Schleife zu tun und die minimale Anzahl von Dateioperationen zu verwenden?
Mit Ausdauer und harte Arbeit werden Sie wahrscheinlich dies zu lösen. – wwii