首页 > 解决方案 > 有没有办法用 Python 更改 windows 文件夹缩略图?

问题描述

我的硬盘上有数百个图像文件夹,除了极少数例外,它们每个都有一个封面图像,我想用作它们各自的文件夹缩略图,或者至少是一个令人难忘的第一张图像。不幸的是,Windows 10 默认使用文件夹中的两个随机图像作为缩略图,我必须每次手动选择第一个图像作为文件夹属性中的缩略图。最近Windows自动擦除了缩略图缓存,我真的不想手动重置这些文件夹上的缩略图。

有没有办法自动进入文件夹的属性、自定义选项卡、文件夹图片以及每次选择文件夹中的第一个项目?或者我是否需要 Windows 出于安全原因没有的假设“Folder.properties.setFolderPicture()”?Python 是我唯一有经验的语言,但如果我需要另一种语言来做到这一点,我愿意尝试。

标签: pythonwindowsfile-properties

解决方案


我没有评论的声誉,所以我在这里堆积我的答案。我觉得您最好为此目的使用文件夹图标,因为在 Internet 上没有任何地方可以找到以编程方式设置文件夹图片的方法,但我敢肯定它是一些注册表技巧。

import os
from PIL import Image
from configparser import ConfigParser

MAX_SIZE = 256, 256

image = Image.open(name_dot_format)
image.thumbnail(MAX_SIZE)
image.save(name_dot_ico)

ini = ConfigParser()
ini['.ShellClassInfo'] = {'IconResource': f'{name_dot_ico},0'}
try:
    with open('desktop.ini', 'w') as desktop_ini:
        ini.write(desktop_ini)
    os.system("attrib +s +h desktop.ini")
    os.system("attrib +r .")
except PermissionError:
    # Don't mess up the already existing desktop.ini
    os.system("attrib -r .")
    os.system("attrib -s -h desktop.ini")
    with open('desktop.ini', 'a') as desktop_ini:
        ini.write(desktop_ini)
    os.system("attrib +s +h desktop.ini")
    os.system("attrib +r .")

推荐阅读