在Python中随机交换文件名
我需要交换文件夹中所有文件的名称,但每个文件都必须有自己的唯一名称 我尝试在文件夹中循环,将所有文件添加到列表中,然后使用random.shuffle()洗牌该列表,然后再次在文件夹中循环,但这次按顺序将每个文件重命名为洗牌列表 是这样的:在Python中随机交换文件名,python,random,filenames,shuffle,Python,Random,Filenames,Shuffle,我需要交换文件夹中所有文件的名称,但每个文件都必须有自己的唯一名称 我尝试在文件夹中循环,将所有文件添加到列表中,然后使用random.shuffle()洗牌该列表,然后再次在文件夹中循环,但这次按顺序将每个文件重命名为洗牌列表 是这样的: for file in os.listdir("images/"): os.rename(file, files_shuffle[i]) i += 1 但我得到WinError183“当文件已经存在时无法创建文件”。解决这个问题的最佳方法是
for file in os.listdir("images/"):
os.rename(file, files_shuffle[i])
i += 1
但我得到WinError183“当文件已经存在时无法创建文件”。解决这个问题的最佳方法是什么?这个问题很容易说明。您有以下文件:
a.txt
b.txt
您将要重命名它们:
b.txt -> a.txt
a.txt -> b.txt
但是,只要您想将b.txt
重命名为a.txt
,就会出现报告的问题,因为文件a.txt
已经存在
您可以在两个过程中实现该过程:
如果临时名称集不与原始名称冲突,则该过程是安全的。方法是分两步重命名它们: a-->1 b-->2 1-->b 2-->a 我用以下代码随机重命名了视频文件:
import os
import random
randlist = random.sample(range(14), 14)
os.rename("clip0.mp4", "video0.mp4")
os.rename("clip1.mp4", "video1.mp4")
os.rename("clip2.mp4", "video2.mp4")
os.rename("clip3.mp4", "video3.mp4")
os.rename("clip4.mp4", "video4.mp4")
os.rename("clip5.mp4", "video5.mp4")
os.rename("clip6.mp4", "video6.mp4")
os.rename("clip7.mp4", "video7.mp4")
os.rename("clip8.mp4", "video8.mp4")
os.rename("clip9.mp4", "video9.mp4")
os.rename("clip10.mp4", "video10.mp4")
os.rename("clip11.mp4", "video11.mp4")
os.rename("clip12.mp4", "video12.mp4")
os.rename("clip13.mp4", "video13.mp4")
os.rename("video0.mp4", "clip" + str(randlist[0]) + ".mp4")
os.rename("video1.mp4", "clip" + str(randlist[1]) + ".mp4")
os.rename("video2.mp4", "clip" + str(randlist[2]) + ".mp4")
os.rename("video3.mp4", "clip" + str(randlist[3]) + ".mp4")
os.rename("video4.mp4", "clip" + str(randlist[4]) + ".mp4")
os.rename("video5.mp4", "clip" + str(randlist[5]) + ".mp4")
os.rename("video6.mp4", "clip" + str(randlist[6]) + ".mp4")
os.rename("video7.mp4", "clip" + str(randlist[7]) + ".mp4")
os.rename("video8.mp4", "clip" + str(randlist[8]) + ".mp4")
os.rename("video9.mp4", "clip" + str(randlist[9]) + ".mp4")
os.rename("video10.mp4", "clip" + str(randlist[10]) + ".mp4")
os.rename("video11.mp4", "clip" + str(randlist[11]) + ".mp4")
os.rename("video12.mp4", "clip" + str(randlist[12]) + ".mp4")
os.rename("video13.mp4", "clip" + str(randlist[13]) + ".mp4")