Python使用pyautogui循环截图按计数器命名时报错如何解决?
错误原因分析
- 核心语法错误:
str(name_of_file,".png")写法错误,str()的第二个参数为编码格式参数,不可传入文件后缀字符串,你误将字符串拼接逻辑写到了str的参数列表中,才会触发need a bytes-like object, int found报错 - 初始类型错误:
count是整数类型,未转字符串时直接和字符串.png做+运算,触发类型不匹配错误 - 隐藏问题1:代码未导入
os模块,调用os.path.join会触发NameError - 隐藏问题2:
count变量未做初始化,首次执行count = count +1会触发NameError - 隐藏问题3:原始路径字符串
r'C:\'写法错误,Python的原始字符串不允许以单个反斜杠结尾,会转义末尾的引号导致路径解析异常 - 补充说明:你第一次修改
str(name_of_file)+".png"的逻辑本身是正确的,如果还报错大概率是代码中还存在上述其他语法问题导致的连带报错。
修复方案
计数器命名版本(符合你当前需求)
import pyautogui as py import os # 初始化计数器 count = 0 # 建议单独建文件夹存截图,不要直接存在C盘根目录,路径末尾不要加反斜杠 save_path = r'C:\screenshot_output' # 自动创建不存在的保存目录 if not os.path.exists(save_path): os.makedirs(save_path) # 请确认你的image_list、x、y、w、h参数已经提前正确定义 for image in image_list: screenshot = py.screenshot(region=(x,y,w,h)) count += 1 # 整数转字符串后拼接后缀 file_name = f"{count}.png" complete_path = os.path.join(save_path, file_name) screenshot.save(complete_path)
时间戳命名版本(你后续要实现的无重名版本)
import pyautogui as py import os from datetime import datetime save_path = r'C:\screenshot_output' if not os.path.exists(save_path): os.makedirs(save_path) for image in image_list: screenshot = py.screenshot(region=(x,y,w,h)) # 生成精确到毫秒的时间戳,完全避免文件重名 time_stamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f") file_name = f"{time_stamp}.png" complete_path = os.path.join(save_path, file_name) screenshot.save(complete_path)
内容的提问来源于stack exchange,提问作者user9686961
相关产品推荐
相关产品推荐

