如何为pyautogui截取的屏幕截图设置动态递增文件名
问题根源
你使用的${变量}语法是其他编程语言的模板字符串写法,Python原生不支持该语法,同时混用原始字符串标识符r与反引号包裹路径的写法也是错误的。此外你的原有代码缺少截图计数自增逻辑,会导致编号一直停留在1。
解决代码
直接修改为Python支持的f-string格式化方案即可,Python 3.6及以上版本都支持该写法:
import pyautogui import time ImgCount = 1 while 1: img = pyautogui.screenshot() # rf前缀同时支持原始字符串路径转义规则 和 f-string变量替换 img.save(rf"D:\My Programs\Img{ImgCount}.png") print(f"SS {ImgCount} saved") ImgCount += 1 # 计数自增,下次截图使用新编号 time.sleep(10)
可选补充:避免程序重启后覆盖原有截图
如果希望程序重启后不会从1开始计数、覆盖之前的截图,可以在初始化计数时先读取目标文件夹下的已有截图最大编号:
import os import re folder_path = r"D:\My Programs" # 初始化计数为1 ImgCount = 1 # 遍历文件夹下的文件匹配编号 if os.path.exists(folder_path): for filename in os.listdir(folder_path): match = re.match(r'Img(\d+)\.png', filename) if match: current_num = int(match.group(1)) if current_num >= ImgCount: ImgCount = current_num + 1
内容的提问来源于stack exchange,提问作者Abhishek Kokate
相关产品推荐
相关产品推荐

