多文件夹分类;添加分类数量,例如分类:3:
新建文件夹1:0001.、0004、0007............,
新建文件夹2:0002、0005、0008.............。
新建文件夹3:0003、0006、0009.............。
多文件夹分类;添加分类数量,例如分类:4:
新建文件夹1:0001;0005;0009;0013.........
新建文件夹2:0002;0006;0010;0014.........
新建文件夹3:0003;0007;0011;0015.........
新建文件夹4:0004;0008;0012;0016.........
请问如何用python实现
先读取文件名,截取“.”前的字段,python好像不需要转int 直接用就可以了,然后/2判断是否整除,就可以以奇偶分类了
import re
import os
import shutil
path = 你的目录的路径
files = os.listdir(path)
for f in files:
num = re.sub(r'\D", '', f)
if (int(num) % 2 == 0):
shutil.copy(path+f,'偶数文件夹\' + f)
else:
shutil.copy(path+f,'奇数文件夹\' + f)
import os
import shutil
n = 2 # 要分组的数量
path = "你的文件路径"
new_paths = ["新建文件夹{}".format(i+1) for i in range(n)]
for new_path in new_paths:
os.mkdir(new_path)
for i, name in enumerate(os.listdir(path)):
shutil.copy(os.path.join(path, name), os.path.join(new_paths[i % n], name))
我不知道是否理解正确了你的意思,就是把图片按位置的不同分到不同的文件夹里面吗。其实获得了文件列表后,你给它加个索引就好了,下面给出了一种方式,蠢笨一点,看看是不是你要的效果。
import os
import shutil
if name == "__main__":
path = input("Path of picture:\n")
num = int(input("Number of folders:\n"))
#获取图片的绝对路径,创建图片路径表。(并将顺序倒序,移动的时候用的pop
#。因为文件数量不一定为num的整数,倒序下再pop不需要关注那么多索引。
#也可以不换序,自己给列表加个索引吧)
pic_list = list(map(lambda x:path+"/"+x, os.listdir(path)[::-1]))
#创建文件夹列表
file_list = []
for i in range(num):
file_list.append("{}/{}".format(path, i+1))
#依照文件夹列表创建文件夹
for i in file_list:
os.makedirs(i)
#每次从图片列表中取出一个,循环移动到指定文件夹里
index = 0
while pic_list:
index %= num
shutil.move(pic_list.pop(), file_list[index])
index += 1