Python如何将大量文件夹中图片批量复制到指定文件夹,并按照顺序重新命名

大家有没有遇到过,老师或者老板上司,突然来找你,要你帮帮他们处理一下文件,把图片复制到另外的一个文件夹里面

虽然,听着是挺简单的,但是还得看文件夹的数量啊,当初的我就是听着简单,随口就答应了,也没想到给我上百个文件夹要我来处理,我真的是 *****

ok,接下来我来开始表演

需要源码的点击文末名片就好了

代码展示

import os
import shutil

path1 = r"F:\cyclegan\新建文件夹\Dataset_Part1"
pic=os.listdir(path1)
k=0
for i in range(1,len(pic)):
    path="F:/cyclegan/新建文件夹/Dataset_Part1"+"/"+str(i)
    pic2 = os.listdir(path)
    for j in range(1, len(pic2)):
        k=k+1
        shutil.copy(path+"/"+str(j)+".jpg", "F:/cyclegan/新建文件夹/zong" + "/" + str(k) + ".jpg")

使用两个for循环即可解决问题:

1)os.listdir(path)方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这里输入print(len(pics))就可以返回这个文件夹中文件的数量。

2)shutil.copy(path1,path2)把path1的文件复制到path2

3)写path路径的时候,如何其中存在循环的变量i作为名称的话(比如1.jpg,2.jpg…),i前面一定要有str,不然会报错(也就是将int型转为str型)

当然还遇到了另外一个问题,就是某个文件夹里的照片多了,我需要删除一些。
比如2000+张挑选344张,复制到另外一个文件夹。

代码解决如下:

import os
import shutil
import random
path1 = r"F:\cyclegan\新建文件夹\zong2"
pic=os.listdir(path1)
j=0
for i in range(1,345):
    number = random.randint(1,len(pic))
    j=j+1
    shutil.copy(path1 + "/" + str(number) + ".jpg", "F:/cyclegan/新建文件夹/testA" + "/" + str(j) + ".jpg")

1)这里使用随机数进行动态选择 random。random.randint用来生成整数

2)shutil.copy依然是复制

最后

今天的分享到这里就结束了,对文章还有什么不懂的,可以直接留言或者私信哈,看到了我都会解答的

也可以直接点击文末进行学习交流~

猜你喜欢

转载自blog.csdn.net/aliYz/article/details/130312019