【问题标题】:Is there a way to change windows folder thumbnails with Python?有没有办法用 Python 更改 windows 文件夹缩略图?
【发布时间】:2020-05-11 22:41:26
【问题描述】:

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

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

【问题讨论】:

    标签: python windows file-properties


    【解决方案1】:

    我没有评论的声誉,所以我在这里堆积我的答案。我觉得你最好使用文件夹 icons 来达到这个目的,因为在 Internet 上没有任何地方可以找到以编程方式设置文件夹 pictures 的方法,但我确信它有些注册表欺骗。

    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 .")
    

    【讨论】:

      【解决方案2】:

      看看here如果对你有帮助。

      win32api / pywin32

      【讨论】:

      • 这看起来很有希望,但也令人困惑。最佳答案是一段对我来说没有明确目的的代码。这也是一个关于图标的问题,它与缩略图相似但略有不同,缩略图使用文件夹中现有的高分辨率图像,而不是 .ico 文件。我不知道 Windows 如何处理图标,如果为数百个小图像文件夹设置自定义图标是个好主意,与似乎用于此类事情的缩略图功能相比。我现在将查看 pywin32 链接,完成后将进行编辑。
      • @FireHawkDelta 不幸的是,他们使用的模块有点低级,但这并不是说它不是documented。此外,如果您希望通过命令提示符执行此操作,我可以建议使用诸如 subprocess.Popen 之类的东西来通过 Command line 更改图标。
      • 我在 win32api 文档中寻找一种更改文件夹属性的方法,但在 win32file 页面中什么也没找到,也不知道该去哪里找。 GetFileAttributes 返回文件夹的数字,所以我想这实际上只是在说“这是一个文件夹”。
      猜你喜欢
      • 2010-11-05
      • 1970-01-01
      • 2012-10-11
      • 2021-03-20
      • 1970-01-01
      • 2017-08-12
      • 2020-09-14
      • 2018-05-27
      • 2017-02-26
      相关资源
      最近更新 更多