资讯动态

Windows_Wallpaper_Script 详解:用 Python 一键提取 Windows 10 锁屏壁纸到本地

发布时间:2026/9/19 21:11:19 来源:尧图企业网站定制
Windows_Wallpaper_Script 详解用 Python 一键提取 Windows 10 锁屏壁纸到本地【免费下载链接】PythonMy Python Examples项目地址: https://gitcode.com/gh_mirrors/py/Python本篇文章围绕仓库 Windows_Wallpaper_Script 目录中的锁屏壁纸提取脚本展开讲解它如何把 Windows 10 锁屏Spotlight推送的精美壁纸自动导入到脚本所在文件夹并完成扩展名修复、分辨率过滤与桌面/手机分类。读完本文你将掌握该脚本的完整工作流程、核心源码 的每一处实现细节以及借助 Windows 任务计划程序实现定时自动抓取新壁纸的落地方法。一、这个脚本解决什么问题Windows 10 的锁屏界面支持Windows 聚焦Spotlight模式系统会联网不定期推送高质量风景、建筑、动物等主题壁纸。这些壁纸会缓存在本地磁盘中但由于它们以无扩展名的二进制文件形式存放普通用户无法直接双击查看或另存为桌面壁纸。本目录中的 wallpaper_extract.py 正是为解决这一痛点而编写它将缓存目录中的壁纸文件全部复制到脚本所在目录的Wallpapers文件夹自动补上.jpg扩展名剔除不符合壁纸分辨率的杂项图片并按宽度把横屏壁纸与竖屏壁纸分别归入desktop、mobile两个子目录。由于锁屏壁纸会在联网状态下持续更新原文档ReadMe.md给出的建议是每次在锁屏上发现新壁纸后重新运行一次脚本或者用 Windows 任务计划程序定时自动运行把抓取过程完全自动化。二、环境要求按照 ReadMe.md 的说明运行该脚本需要满足依赖说明操作系统Windows 10 PC脚本依赖 Windows 10 的 Spotlight 缓存路径PythonPython 3.x第三方库PillowPIL 模块的 Python 3 兼容版本安装 Pillow 一行命令即可pip install Pillow安装完成后在脚本所在目录执行python wallpaper_extract.py脚本运行完毕会在终端打印一个 ASCII 艺术风格的DONE横幅源码 wallpaper_extract.py随后自动退出提取结果即出现在Wallpapers目录中。三、整体工作流程四步流水线整个脚本被设计为一条四步流水线每一步对应一个静态方法最终由exec_all()按顺序串联执行wallpaper_extract.pycopy_wallpapers() 复制缓存文件 │ ▼ change_ext() 为无扩展名文件补上 .jpg │ ▼ extract_wall() 用 PIL 验证图片并剔除非 1920/1080 宽度的文件 │ ▼ arr_desk_wallpapers() 按宽度把壁纸归入 desktop / mobile 子目录 │ ▼ 输出 DONE 横幅结束对应到源码入口脚本末尾实例化Wallpaper类并立即触发全流程wallpaper_extract.pywall Wallpaper() wall.exec_all()每一步之间还通过time_gap()wallpaper_extract.py打印类似Copying Wallpapers..的延时提示营造正在处理的进度感便于观察执行阶段。四、源码逐模块解读4.1 路径配置源目录与目标目录脚本用类级字典file_urls统一管理所有路径wallpaper_extract.pyusername os.environ[USERNAME] file_urls { wall_src: C:\\Users\\ username \\AppData\\Local\\Packages\\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\\ LocalState\\Assets\\, wall_dst: os.path.dirname(os.path.abspath(__file__)) \\Wallpapers\\, wall_mobile: os.path.dirname(os.path.abspath(__file__)) \\Wallpapers\\mobile\\, wall_desktop: os.path.dirname(os.path.abspath(__file__)) \\Wallpapers\\desktop\\, }wall_srcSpotlight 壁纸缓存目录。路径通过os.environ[USERNAME]动态拼接自动适应当前 Windows 登录用户无需手工修改。该目录由Microsoft.Windows.ContentDeliveryManager包管理其中除了锁屏壁纸外还混杂着大量小尺寸图标、Logo 等资源这正是后续需要分辨率过滤的原因。wall_dst/wall_mobile/wall_desktop目标目录均基于os.path.dirname(os.path.abspath(__file__))计算即脚本自身所在目录与文档中导入到脚本所在当前文件夹的描述一致。输出结构为Wallpapers/desktop1920 宽与Wallpapers/mobile1080 宽两个子目录。4.2 复制壁纸copy_wallpapers()for filename in os.listdir(w.file_urls[wall_src]): shutil.copy(w.file_urls[wall_src] filename, w.file_urls[wall_dst])该方法wallpaper_extract.py遍历缓存源目录中的所有文件用shutil.copy逐个复制到Wallpapers根目录。此时复制出的文件没有扩展名需要在下一步处理。4.3 补全扩展名change_ext()for filename in os.listdir(w.file_urls[wall_dst]): base_file, ext os.path.splitext(filename) if ext : if not os.path.isdir(w.file_urls[wall_dst] filename): os.rename(w.file_urls[wall_dst] filename, w.file_urls[wall_dst] filename .jpg)该方法wallpaper_extract.py扫描目标目录对没有扩展名的文件统一追加.jpg。os.path.isdir的判断保证了只处理普通文件、跳过子目录。4.4 分辨率过滤extract_wall()im Image.open(w.file_urls[wall_dst] filename) ... if list(im.size)[0] ! 1920 and list(im.size)[0] ! 1080: im.close() os.remove(w.file_urls[wall_dst] filename)该方法wallpaper_extract.py是整条流水线的质检环节用 Pillow 的Image.open打开每一个.jpg文件IOError说明该文件并非有效图片会打印This isnt a picture.读取图片宽度im.size的第一个元素只有宽度为 1920对应横屏桌面壁纸如 1920×1080或 1080对应竖屏手机壁纸如 1080×1920的文件才被保留其余全部删除。这一步有效过滤掉了 Spotlight 缓存目录里大量非壁纸的小尺寸素材。仓库中 Wallpapers/desktop 目录下的示例图片正是 1920×1080 横屏图Wallpapers/mobile 目录下的示例图片则是 1080×1920 竖屏图与源码的宽度判定逻辑完全对应。4.5 桌面/手机分类arr_desk_wallpapers()if list(im.size)[0] 1920: os.rename(w.file_urls[wall_dst] filename, w.file_urls[wall_desktop] filename) elif list(im.size)[0] 1080: os.rename(w.file_urls[wall_dst] filename, w.file_urls[wall_mobile] filename)该方法wallpaper_extract.py把经过过滤的壁纸按宽度移动归位宽度1920→ 移入Wallpapers\desktop\桌面壁纸宽度1080→ 移入Wallpapers\mobile\手机壁纸若目标位置已存在同名文件会捕获FileExistsError并打印File Already Exists!同时删除源目录中的重复文件避免重复运行脚本时产生堆积。4.6 编排入口exec_all()staticmethod def exec_all(): w Wallpaper w.copy_wallpapers() w.change_ext() w.extract_wall() w.arr_desk_wallpapers() print(w.msg) time.sleep(2)wallpaper_extract.py按顺序调用上述四个方法最后打印DONE横幅并暂停 2 秒整个提取流程结束。五、运行结果与输出目录结构脚本运行完成后得到如下目录结构仓库中已附带提取成果样本Windows_Wallpaper_Script/ ├── ReadMe.md ├── wallpaper_extract.py └── Wallpapers/ ├── desktop/ # 1920×1080 横屏壁纸 └── mobile/ # 1080×1920 竖屏壁纸此后你可以进入 Windows_Wallpaper_Script/Wallpapers/desktop把喜欢的横屏壁纸直接设置为 Windows 桌面壁纸竖屏图片则适合作为手机壁纸素材。六、进阶用 Windows 任务计划程序实现定时自动抓取原文档ReadMe.md特别指出锁屏壁纸会随联网持续更新因此推荐配合 Windows 任务计划程序定时运行脚本并在系统设置中把桌面壁纸文件夹指向脚本的输出目录实现壁纸库的持续自增长。可按下述步骤配置按Win R输入taskschd.msc回车或在开始菜单搜索任务计划程序在右侧操作栏点击创建基本任务命名为Wallpaper Extractor触发器选择每天并在后续步骤中通过高级选项设置重复间隔如每 6 小时执行一次或按需设为一周一次操作选择启动程序程序或脚本填入python.exe的完整路径可用where python查询例如C:\Users\用户名\AppData\Local\Programs\Python\Python310\python.exe添加参数填入脚本的绝对路径例如D:\Windows_Wallpaper_Script\wallpaper_extract.py起始于填入脚本所在目录点击完成即可。之后每次锁屏出现新壁纸任务计划程序都会在指定时间自动把新壁纸抓取到Wallpapers目录最后在 Windows 10设置 → 个性化 → 背景中将壁纸文件夹指定为 Wallpapers/desktop 目录即可让桌面自动轮播提取到的壁纸。七、注意事项与已知限制基于对源码的逐行分析实际使用时有以下几点值得留意目标目录需预先存在脚本本身并未调用os.makedirs创建Wallpapers、Wallpapers\mobile、Wallpapers\desktop目录。首次运行前需要手工创建这三个目录仓库已自带否则shutil.copy或os.rename会因目录不存在而报错。缓存目录依赖 Windows 10 特定包路径源路径中写死了包名Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy。从源码结构看该路径适用于常见的 Windows 10 Spotlight 缓存布局若系统更新后路径发生变化需要同步修改file_urls中的wall_src。非图片文件的健壮性extract_wall()中若Image.open抛出IOError只会打印提示而不会中断后续代码紧接着对im.size的访问在异常场景下可能触发NameError。此外 Assets 缓存中若存在无法被 Pillow 识别为 JPEG 的.jpg文件也会进入同一分支如有需要可自行增加continue或try/except保护。重复运行的幂等性脚本对已存在的同名壁纸通过FileExistsError分支打印提示并清理重复文件多次运行不会无限堆积可以放心配合任务计划程序使用。八、小结Windows_Wallpaper_Script 虽然是一个小巧的单文件脚本却完整覆盖了复制缓存 → 补全扩展名 → 分辨率过滤 → 分类归档这一套实用的文件处理流水线路径基于USERNAME环境变量与__file__动态解析过滤逻辑以图片宽度 1920/1080 作为桌面/手机壁纸的判定标准再配合 Windows 任务计划程序即可实现壁纸库的自动维护。如果你长期使用 Windows 10 的Windows 聚焦锁屏并被那些精美壁纸吸引这个脚本是零成本、可立即上手的最优解。【免费下载链接】PythonMy Python Examples项目地址: https://gitcode.com/gh_mirrors/py/Python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价