win10下,文件夹缩略图默认为最后一张。

右键单击文件夹属性,自定义里可以设置封面。

像我的相册有几千个文件夹就不能这么做了


demo

  • 原理

在windows系统下有一个隐藏文件Folder,只要替换它就能改变文件夹缩略图了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

def moveDir():

path = 'yourPath'
listDir = os.listdir(path)
destDir = 'yourDest'

for dir in listDir:
subDir = path+dir+'/'
# 获取文件名
files = os.listdir(subDir)

haveFolder = False

# for jpg in files:
# if(re.match('Folder\.[a-zA-Z]+', jpg)):
# os.remove(subDir+jpg)

# 循环查找2次,先确认
for jpg in files:
if(re.match('Folder.[a-zA-Z]+', jpg)):
haveFolder = True
print('%s文件夹下已经有封面文件了...' % (subDir))
break

if(haveFolder):
continue

for jpg in files:
# 找到第一张图片文件
if(re.match('\w+\.(?:[jp][pn]g|webp)', jpg, re.I)):
firstImg = subDir+jpg
# 获取cover后缀
coverImg = subDir+'Folder.'+jpg.split('.')[-1]

with open(firstImg, 'rb+') as oFp, open(coverImg, 'wb+') as nFp:
imgData = oFp.read(-1)
# 复制文件
nFp.write(imgData)

break

# 移动到储存文件夹
shutil.move(subDir, destDir)