【发布时间】:2018-01-13 01:33:12
【问题描述】:
假设我有一个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)
但这不是很优雅,它需要两倍的文件操作。找到一个好的前缀本身可能是一个问题。 是否可以在一个循环中使用最少数量的文件操作来完成此操作?
【问题讨论】:
-
只要坚持不懈和努力工作,您可能会解决这个问题。
标签: python python-3.x rename filenames pathlib