python - 剪贴板/ 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 多行相同的输出,应该打印一次的输出。
我在这里做错了什么,有什么想法吗?
解决方案
该问题是由于 key_down 和 key_up 之间的延迟而发生的。这可以通过读取 key_down 或 key_up 来防止。
我尝试了如何做到这一点,但这对我来说是死路一条,所以我决定使用剪贴板中差异的输出。
推荐阅读
- javascript - React Hooks 上的 useState 不更新数组
- python - 如果某些值是 NaN,我如何对 DataFrame 中的 2 个特定列行求和?
- angular - Ionic 4 - 在指令上获取 ElementRef 属性
- vue.js - 由于重复“请运行 npm install -g @vue/cli-upgrade 并重试”,无法升级 vue cli。
- database - 如何从 DataGridView 编辑行?MS Access 数据库
- c++ - 在 C++ 中将内部模板类作为模板参数传递
- r - ggmap和空间数据绘图问题
- python - 检查子元素的文本后如何捕获父元素的文本
- benchmarking - 绩效评估的惯用方式?
- tfs - ADO (TFS) 仪表板是否支持选项卡?