假设我有一个set
文件重命名操作:
renames={(current_1,new_1),(current_2,new_2),...}
保证文件current_1,current_2,...
存在并且新文件new_1,new_2,...
是唯一的。所有文件都是pathlib.Path
.
然而,它们可能是当前被命名为另一个文件的文件,必须重命名:即它可能存在current_i==new_j
.
什么是实现重命名操作的优雅方式?请注意,我不能只迭代renames
并重命名每个文件,因为我必须为新名称与尚未重命名的文件的名称冲突的情况做好准备。
我正在专门寻找 Python3 中的实现,并且我希望将重命名保留为set
上面的形式。
一种简单的方法是临时为文件添加前缀:
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)
但这不是很优雅,它需要两倍的文件操作。找到一个好的前缀本身可能是一个问题。是否可以使用最少数量的文件操作在一个循环中执行此操作?