дублированный вывод для буфера обмена / pyperclip - PullRequest
0 голосов
/ 07 июня 2018

Я хочу создать историю локальных копий (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: Ожидание Ctrl + C напечатано Затем 40 строк "напечатано"

То же самое касается pyperclip, код 2 с pyperclip вывел более 700 строк одного и того же вывода, вывод, который должен быть напечатан один раз.

Что я делаю здесь неправильно, есть идеи?

1 Ответ

0 голосов
/ 08 июня 2018

Проблема возникает из-за задержки между key_down и key_up.Это можно предотвратить, прочитав либо key_down, либо key_up.

Я пытался сделать это, но для меня это был тупик, поэтому я решил использовать вывод разницы в буфере обмена.

...