#38 python操作剪切板

搞了个算法小测试,发现还是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值