如何解决os.rename无法创建已经存在的文件
现在我正尝试使用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"]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。