Python脚本运行10分钟后触发pyperclip剪贴板访问拒绝错误求助
问题解决:pyperclip访问剪贴板出现WinError 5拒绝访问
问题原因
这个错误本质是Windows剪贴板被其他进程占用,或者pyperclip的剪贴板资源未正确释放——你之前用pyautogui模拟ctrl+v是通过系统输入事件间接操作剪贴板,和pyperclip直接调用Windows剪贴板API的逻辑不同,后者更容易因资源锁冲突触发权限问题,尤其是长时间运行后。
解决方案
增加重试机制
临时的剪贴板占用可以通过重试解决,写个包装函数替代原有的pyperclip.paste():import pyperclip import time def safe_paste(retries=3, delay=0.5): for _ in range(retries): try: return pyperclip.paste() except pyperclip.PyperclipWindowsException: time.sleep(delay) raise pyperclip.PyperclipWindowsException("多次尝试访问剪贴板失败")调用时用
PyDeepClip1 = safe_paste()即可。改用更底层的剪贴板操作(pywin32)
直接调用Windows API能更可靠地管理剪贴板资源,先安装依赖:pip install pywin32然后用以下函数获取剪贴板内容:
import win32clipboard def get_clipboard_content(): win32clipboard.OpenClipboard() try: # 按需调整数据格式,默认获取文本 content = win32clipboard.GetClipboardData() finally: # 确保剪贴板被关闭,避免资源泄漏 win32clipboard.CloseClipboard() return content排查后台占用程序
关闭剪贴板管理器、杀毒软件的剪贴板监控功能,或者其他可能持续访问剪贴板的后台程序,这类工具长时间运行后可能会锁定剪贴板资源。降低剪贴板访问频率
如果脚本频繁调用剪贴板读取,可缓存已获取的内容,避免重复访问——比如连续操作同一份数据时,不用每次都调用paste()。
内容的提问来源于stack exchange,提问作者Daniel King
相关产品推荐
相关产品推荐

