Python 3个实现屏幕截图工具的方法 屏幕截图是日常工作和自动化任务中的常见需求。Python提供了多种实现屏幕截图的方法本文将介绍三种实用的实现方式包括使用方法、适用场景和完整代码示例。方法一使用PILPillow库实现基础截图场景介绍适合简单的单次截图需求如快速保存当前屏幕状态、制作操作教程配图等。这是最轻量级的解决方案。使用方法1、安装Pillow库 pip install Pillow2、运行脚本即可完成截图3、截图将保存为当前目录下的 screenshot.jpg代码示例from PIL import ImageGrab import datetime def take_screenshot(): # 捕获整个屏幕 screenshot ImageGrab.grab() # 生成带时间戳的文件名 timestamp datetime.datetime.now().strftime(%Y%m%d_%H%M%S) filename fscreenshot_{timestamp}.jpg # 保存截图 screenshot.save(filename, JPEG) print(f截图已保存为: {filename}) if __name__ __main__: take_screenshot()方法二使用pyautogui实现定时连续截图场景介绍适合需要连续监控的场景如软件演示录制、系统监控、自动化测试过程记录等。使用方法1、安装pyautogui pip install pyautogui2、运行脚本并输入截图间隔时间秒和总时长分钟3、截图将自动保存在创建的 screenshots 文件夹中代码示例import pyautogui import time import os from datetime import datetime def continuous_screenshot(interval5, duration_minutes1): 连续截图功能 interval: 截图间隔秒 duration_minutes: 总持续时间分钟 # 创建保存目录 if not os.path.exists(screenshots): os.makedirs(screenshots) total_seconds duration_minutes * 60 screenshot_count total_seconds // interval print(f开始连续截图共{screenshot_count}张间隔{interval}秒) for i in range(screenshot_count): # 捕获屏幕 screenshot pyautogui.screenshot() # 生成文件名 timestamp datetime.now().strftime(%Y%m%d_%H%M%S) filename fscreenshots/screenshot_{timestamp}_{i1}.png # 保存截图 screenshot.save(filename) print(f已保存第{i1}张截图: {filename}) # 等待指定间隔 time.sleep(interval) print(连续截图完成) if __name__ __main__: interval int(input(请输入截图间隔秒: )) duration int(input(请输入截图持续时间分钟: )) continuous_screenshot(interval, duration)方法三使用mss库实现高性能截图场景介绍适合需要高性能截图的场景如游戏录制、实时监控、视频处理等对截图速度要求较高的应用。使用方法1、安装mss库 pip install mss2、运行脚本选择截图模式单次/连续3、截图将保存为PNG格式支持多显示器配置代码示例import mss import mss.tools import time from datetime import datetime def high_performance_screenshot(modesingle, monitor_num1, interval1, count10): 高性能截图工具 mode: single单次截图, continuous连续截图 monitor_num: 显示器编号从1开始 interval: 连续截图间隔秒 count: 连续截图数量 with mss.mss() as sct: # 获取所有显示器信息 monitors sct.monitors if monitor_num len(monitors): print(f错误只有{len(monitors)}个显示器) return # 选择指定的显示器 monitor monitors[monitor_num - 1] if mode single: # 单次截图 screenshot sct.grab(monitor) timestamp datetime.now().strftime(%Y%m%d_%H%M%S) filename fhighres_screenshot_{timestamp}.png mss.tools.to_png(screenshot.rgb, screenshot.size, outputfilename) print(f高清截图已保存: {filename}) elif mode continuous: # 连续截图 print(f开始高性能连续截图共{count}张) for i in range(count): screenshot sct.grab(monitor) timestamp datetime.now().strftime(%Y%m%d_%H%M%S_%f) filename fhighres_screenshot_{timestamp}_{i1}.png mss.tools.to_png(screenshot.rgb, screenshot.size, outputfilename) print(f已保存第{i1}张高清截图) if i count - 1: # 最后一张不需要等待 time.sleep(interval) print(高性能连续截图完成) if __name__ __main__: print(选择截图模式:) print(1 - 单次截图) print(2 - 连续截图) choice input(请输入选择1或2: ) if choice 1: monitor_num int(input(请输入显示器编号默认为1: ) or 1) high_performance_screenshot(single, monitor_num) elif choice 2: monitor_num int(input(请输入显示器编号默认为1: ) or 1) interval float(input(请输入截图间隔秒: )) count int(input(请输入截图数量: )) high_performance_screenshot(continuous, monitor_num, interval, count)根据具体需求选择合适的截图方法可以大大提高工作效率。三种方法各有优势建议根据实际场景灵活选择。方法优点缺点适用场景PIL库简单轻量依赖少功能相对基础简单单次截图pyautogui功能丰富易于使用性能一般常规自动化任务mss库高性能支持多显示器安装稍复杂高性能需求场景“无他惟手熟尔”有需要的用起来关注「Nicholas与Pypi」获取更多Python实战