【发布时间】:2018-06-07 15:50:05
【问题描述】:
我想在 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的终端输出: 等待 Ctrl+C 打印 然后40行“打印”
pyperclip 也是如此,代码 2 与 pyperclip 输出了 700 多行相同的输出,应该打印一次的输出。
我在这里做错了什么,有什么想法吗?
【问题讨论】:
-
输出对我来说很有意义。您正在循环中检查
keyboard.is_pressed,并且您可能合理地期望循环每秒迭代一千次。所以如果你按住 ctrl+c 一秒钟,那么条件语句就会执行一千次。您应该查看键盘文档,看看是否有一种方法可以在响应键盘事件时只执行一次操作。 -
我明白你的意思。谢谢@Kevin
标签: python python-3.x clipboard pyperclip