Python监听剪切板的两种实现方式对比
本文介绍了Python中实现剪切板监听的两种常见方法。第一种基于win32clipboard库,执行速度快但稳定性较差,容易出错;第二种采用pyperclip库,虽然速度稍慢,但运行稳定且不易报错。作者建议在程序开发中优先使用第二种方案,以确保后台脚本的可靠性。
第一种方案
import win32clipboard
import time
#速度快 容易出错
class niubi():
def lihai(self):
while True:
#jianting().main()
t = jianting().main()
print(t)
class jianting():
def clipboard_get(self):
"""获取剪贴板数据"""
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)
win32clipboard.CloseClipboard()
return data
def main(self):
"""后台脚本:每隔0.2秒,读取剪切板文本,检查有无指定字符或字符串,如果有则执行替换"""
# recent_txt 存放最近一次剪切板文本,初始化值只多执行一次paste函数读取和替换
recent_txt = self.clipboard_get()
while True:
# txt 存放当前剪切板文本
txt = self.clipboard_get()
# 剪切板内容和上一次对比如有变动,再进行内容判断,判断后如果发现有指定字符在其中的话,再执行替换
if txt != recent_txt:
# print(f'txt:{txt}')
recent_txt = txt # 没查到要替换的子串,返回None
return recent_txt
# 检测间隔(延迟0.2秒)
time.sleep(0.2)
if __name__ == '__main__':
niubi().lihai()
该方案执行速度较快,但稳定性不足,极易出现错误。尽管普通用户可能难以察觉速度上的差异,但由于其不稳定性,通常不建议采用此方法。
第二种方案
import pyperclip
import time
#稳定不出错
class niubi():
def lihai(self):
while True:
#jianting().main()
t = jianting().main()
print(t)
class jianting():
def clipboard_get(self):
"""获取剪贴板数据"""
data = pyperclip.paste() #主要这里差别
return data
def main(self):
"""后台脚本:每隔0.2秒,读取剪切板文本,检查有无指定字符或字符串,如果有则执行替换"""
# recent_txt 存放最近一次剪切板文本,初始化值只多执行一次paste函数读取和替换
recent_txt = self.clipboard_get()
while True:
# txt 存放当前剪切板文本
txt = self.clipboard_get()
# 剪切板内容和上一次对比如有变动,再进行内容判断,判断后如果发现有指定字符在其中的话,再执行替换
if txt != recent_txt:
# print(f'txt:{txt}')
recent_txt = txt # 没查到要替换的子串,返回None
return recent_txt
# 检测间隔(延迟0.2秒)
time.sleep(0.2)
if __name__ == '__main__':
niubi().lihai()
在实际程序开发中,我通常推荐使用第二种方案,因其具备更好的稳定性。
以上内容为本文的全部介绍,希望能为各位的学习提供有益参考。同时也感谢大家对本平台的支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









