问题描述
现在我正尝试使用python重命名包含txt文件的文件夹的内容:
原始文件的命名从0.txt到100.txt
并且我想将其名称更改为从10开始而不是0(例如,文件将从10.txt更改为110.txt)
我有2个列表,一个包含原始名称路径,另一个包含新名称路径,并且我试图使用os.rename()或shutil.move()重命名文件。
但是,当我尝试使用os.rename()时,出现了无法创建已经存在的文件的错误。
当我尝试使用shutil.move()时,它会删除每个重复的文件夹,仅给我最后9个文件夹(101至110)。
有没有解决的办法?
解决方法
我建议移动文件并在临时目录中重命名它们,删除原始文件,然后从临时目录中移回文件。然后,您可以选择删除您创建的临时目录。
,您准确地定义了问题。例如,当您处理02.txt时,将其重命名为12.txt。十次迭代后,将同一文件重命名为22.txt,然后重命名为23.txt,...直到完成102.txt。您可以使用前十个文件来执行此操作,系统地清除其他90个文件。
您必须从具有扩展空间的名称空间的末尾开始。从100.txt 向下开始。将100.txt重命名为110.txt,然后将99.txt重命名为109.txt,依此类推。这样一来,您的动作就始终有10个未使用的文件名间隔。
编码留给读者练习。 :-)
,听起来您需要从列表末尾开始。尝试先移动100-> 110,然后再移动99-> 109,依此类推。如果从列表的开头开始尝试移动1-> 11,则11将已经存在。
编辑:我实际上建议上面的塔拉诺斯回答
,使用os.replace()
替换一个已经存在的文件。要检查文件是否存在,请使用os.path.isfile('file path')
尝试反转列表(使用原始名称和新名称):
listOrig = ["0.txt","1.txt",...,"100.txt"]
listNew = ["10.txt","11.txt","110.txt"]
# Reverse the lists
listOrig = listOrig.reverse() # ["100.txt" ... "0.txt"]
listNew = listNew.reverse() # ["110.txt" ... "10.txt"]