搞了个算法小测试,发现还是python写东西舒服,c系列太烦杂了,python大法好!
操作剪切板(需要pywin32库)
导入模块
import win32clipboard as w
文本读取实现
def getclipboard():
w.OpenClipboard()
data= w.GetClipboardData()
w.CloseClipboard()
return data
文本写入实现
def setclipboard(string):
w.OpenClipboard()
w.SetClipboardData(w.CF_UNICODETEXT, string)
w.CloseClipboard()
相关函数
w.EmptyClipboard() # 清空剪切板
分析
- 占用空间小,实现依赖python自带库
- 速度快
- 可能出错(?)
操作剪切板(需要pyperclip库)
导入模块
import pyperclip
相关函数
pyperclip.paste() # 读取剪切板
pyperclip.copy(str) # str参数自由更改
分析
- 速度慢
- 实现涉及qt5
- 较稳定(?)
附录
各种测试
# 绕圈子代码
def getclipboard():
w.OpenClipboard()
t = w.GetClipboardData(w.CF_TEXT) # 返回bytes二进制字符串b'XXX'
# t = str(t, encoding = "utf8") # 遇到中文就gg
t = str(t, encoding = "GBK")
w.CloseClipboard()
return t
# 测试加参影响
def getclipboard():
w.OpenClipboard()
data = w.GetClipboardData(w.CF_UNICODETEXT) # 和无参好像没差
w.CloseClipboard()
return data
# 测试用代码
import win32clipboard as w
def getclipboard():
w.OpenClipboard()
data = w.GetClipboardData()
w.CloseClipboard()
return data
str = getclipboard()
print(str)
print(type(str))
# 无效代码
def setclipboard():
w.OpenClipboard()
w.SetClipboardData(w.CF_TEXT, "yes") # 无效,原因不明
w.CloseClipboard()
# return False
# 另一种设置剪切板方式
def setclipboard():
w.OpenClipboard()
w.EmptyClipboard() # 必须加这一行,否则无效
w.SetClipboardText("yes") # 加参没影响(?)
w.CloseClipboard()
参考
clibboard参数对照
CF_TEXT 1
CF_BITMAP 2
CF_METAFILEPICT 3
CF_SYLK 4
CF_DIF 5
CF_TIFF 6
CF_OEMTEXT 7
CF_DIB 8
CF_PALETTE 9
CF_PENDATA 10
CF_RIFF 11
CF_WAVE 12
CF_UNICODETEXT 13
CF_ENHMETAFILE 14
CF_HDROP 15
CF_LOCALE 16
CF_DIBV5 17
CF_MAX 18
CF_OWNERDISPLAY 128
CF_DSPTEXT 129
CF_DSPBITMAP 130
CF_DSPMETAFILEPICT 131
CF_DSPENHMETAFILE 142