首页 > 解决方案 > 剪贴板/ pyperclip的重复输出

问题描述

我想在 txt 中创建本地副本(ctrl+c)历史记录,但在输出中我不断收到重复的条目。

我的代码:

import keyboard
import win32clipboard

print('Waiting Ctrl+C\n')    

while True

    if keyboard.is_pressed('ctrl+c'):
        win32clipboard.OpenClipboard()
        data = win32clipboard.GetClipboardData()
        a = open('E:\Python\copyhistory.txt', 'a')
        a.write(data)  # text
        a.close()
        win32clipboard.CloseClipboard()
        print('printed')

输出被重复了很多。我也尝试了 pyperclip,但这也没有帮助。同样的问题也存在于 pyperclip 中。

Pyperclip 示例如下:

import pyperclip
import keyboard

while True:
    if keyboard.is_pressed('ctrl+c'):
        a = pyperclip.paste()
        print(a)

代码1的终端输出:Waiting Ctrl+C print 然后40行“printed”

pyperclip 也是如此,带有 pyperclip 的代码 2 输出了 700 多行相同的输出,应该打印一次的输出。

我在这里做错了什么,有什么想法吗?

标签: pythonpython-3.xclipboardpyperclip

解决方案


该问题是由于 key_down 和 key_up 之间的延迟而发生的。这可以通过读取 key_down 或 key_up 来防止。

我尝试了如何做到这一点,但这对我来说是死路一条,所以我决定使用剪贴板中差异的输出。


推荐阅读