电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何用python實(shí)現(xiàn)復(fù)制粘貼功能

瀏覽:3日期:2022-06-25 11:49:13
楔子

pandas里面有這么一個(gè)方法:pd.read_clipboard,可以根據(jù)你復(fù)制的內(nèi)容生成DataFrame。是的,就是我們平時(shí)選中,然后復(fù)制、或者Ctrl+C時(shí)拷貝的內(nèi)容,所以比較神奇,那么pandas到底是怎么做到的,它是怎么讀出我們使用Ctrl +C復(fù)制的內(nèi)容呢。

看了一下源碼,非常的復(fù)雜,方法是使用了ctypes,然后調(diào)用了操作系統(tǒng)的一個(gè)動(dòng)態(tài)庫(kù)實(shí)現(xiàn)的。ctypes是專(zhuān)門(mén)來(lái)調(diào)用C、C++使用的,但是我們知道Python有一個(gè)pywin32模塊,對(duì)于Windows操作系統(tǒng)提供的接口進(jìn)行了封裝。所以下面我們使用pywin32來(lái)實(shí)現(xiàn)我們平時(shí)使用的復(fù)制粘貼功能。

首先是安裝:pip install pywin32。

實(shí)現(xiàn)復(fù)制

下面我們來(lái)看看如何使用這個(gè)模塊實(shí)現(xiàn)復(fù)制功能,另外關(guān)于pywin32這個(gè)模塊,它的家族非常的龐大。

如何用python實(shí)現(xiàn)復(fù)制粘貼功能

里面有很多的win32xxx.pyd,我們直接調(diào)用就行。

# win32clipboard專(zhuān)門(mén)用來(lái)復(fù)制粘貼的import win32clipboard as wcbimport win32con as wc # 打開(kāi)復(fù)制粘貼板wcb.OpenClipboard()# 我們之前可能已經(jīng)Ctrl+C了,這里是清空目前Ctrl+C復(fù)制的內(nèi)容。但是經(jīng)過(guò)測(cè)試,這一步即使沒(méi)有也無(wú)所謂wcb.EmptyClipboard()# 將內(nèi)容寫(xiě)入復(fù)制粘貼板,第一個(gè)參數(shù)win32con.CF_TEXT不用管,我也不知道它是干什么的# 關(guān)鍵第二個(gè)參數(shù),就是我們要復(fù)制的內(nèi)容,一定要傳入字節(jié)wcb.SetClipboardData(wc.CF_TEXT, '古明地覺(jué)世界第一可愛(ài)'.encode('gbk'))# 關(guān)閉復(fù)制粘貼板wcb.CloseClipboard()

然后我們 Ctrl+V 粘貼就會(huì)得到 '古明地覺(jué)世界第一可愛(ài)' 這個(gè)字符串,再?gòu)?qiáng)調(diào)一次,這里不能傳入字符串、而是要傳入字節(jié)。如果傳入字符串,那么中文會(huì)得到亂碼、ascii文本只會(huì)得到第一個(gè)字符。

另外這里要使用 gbk,因?yàn)槲耶?dāng)前操作系統(tǒng)默認(rèn)編碼使用的是gbk,所以會(huì)對(duì)我們輸入的字節(jié)使用 gbk 解碼。因此如果使用utf-8編碼的話(huà),那么粘貼得到的依舊是亂碼。當(dāng)然具體根據(jù)你當(dāng)前的機(jī)器決定。

實(shí)現(xiàn)粘貼

復(fù)制我們實(shí)現(xiàn)了,下面來(lái)看看怎么實(shí)現(xiàn)粘貼。

# win32clipboard專(zhuān)門(mén)用來(lái)復(fù)制粘貼的import win32clipboard as wcbimport win32con as wc # 打開(kāi)復(fù)制粘貼板wcb.OpenClipboard()# 獲取粘貼板內(nèi)容,既然是獲取,那么只需要一個(gè)參數(shù)即可。# 會(huì)返回已經(jīng)使用Ctrl+C復(fù)制得到的內(nèi)容data = wcb.GetClipboardData(wc.CF_TEXT)# 關(guān)閉復(fù)制粘貼板wcb.CloseClipboard() # 得到的依舊是字節(jié)'''我們?cè)?實(shí)現(xiàn)復(fù)制'的時(shí)候說(shuō)過(guò),因?yàn)镃trl+V默認(rèn)使用gbk解碼,所以在模擬Ctrl+C的時(shí)候我們也要傳入使用gbk編碼的字符串那么在'實(shí)現(xiàn)粘貼'的時(shí)候也是一樣,我們使用Ctrl+C復(fù)制的時(shí)候,也會(huì)使用gbk編碼成字節(jié)那么這里模擬Ctrl+V得到字節(jié)之后也要使用gbk解碼'''# 然后隨便Ctrl+C拷貝一段內(nèi)容,下面就會(huì)將拷貝的內(nèi)容打印出來(lái)print(data.decode('gbk'))

我們上面的模塊是win32家族,所以它只適用于Windows系統(tǒng),不適用于Linux和macOS。那么如果我想在Linux和macOS中實(shí)現(xiàn)怎么辦呢?也很簡(jiǎn)單,事實(shí)上,這兩個(gè)系統(tǒng)實(shí)現(xiàn)起來(lái)反而會(huì)更簡(jiǎn)單,因?yàn)樽詭Я讼嚓P(guān)的命令。

macOS實(shí)現(xiàn)復(fù)制粘貼

import subprocess# 實(shí)現(xiàn)拷貝def copy(text): p = subprocess.Popen(['pbcopy', 'w'], stdin=subprocess.PIPE, close_fds=True) # 將內(nèi)容(text)拷貝起來(lái) p.communicate(input=text.encode('utf-8')) # 實(shí)現(xiàn)粘貼 def paste(): p = subprocess.Popen(['pbpaste', 'r'], stdout=subprocess.PIPE, close_fds=True) stdout, stderr = p.communicate() #返回粘貼內(nèi)容 return stdout.decode('utf-8') Linux實(shí)現(xiàn)復(fù)制粘貼

注意:Linux上實(shí)現(xiàn)復(fù)制粘貼實(shí)際上意義不大,因?yàn)閷?shí)現(xiàn)復(fù)制粘貼的功能的一個(gè)前提是你必須要有顯示器。

而公司使用的服務(wù)器肯定不會(huì)帶顯示器的,使用的時(shí)候都是通過(guò)xshell遠(yuǎn)程連接。但是Linux上也提供了相應(yīng)的命令,叫xclip,當(dāng)然這個(gè)命令不是自帶的,使用的時(shí)候可能還要安裝:yum install xclip。下面來(lái)看看怎么通過(guò) Python 調(diào)用,實(shí)際上和macOS一樣。

import subprocess# 實(shí)現(xiàn)拷貝def copy(text): p = subprocess.Popen( ['xclip', '-selection', 'c'], stdin=subprocess.PIPE, close_fds=True ) p.communicate(input=text.encode('utf-8')) # 實(shí)現(xiàn)粘貼 def paste(): p = subprocess.Popen( ['xclip', '-selection', 'c', '-o'], stdout=subprocess.PIPE, close_fds=True ) stdout, stderr = p.communicate() return stdout.decode('utf-8')

可以看到Linux和macOS還是比較簡(jiǎn)單的,因?yàn)椴僮飨到y(tǒng)提供了這個(gè)命令,我們可以直接使用。但是Windows則沒(méi)有提供,所以需要使用ctypes,或者使用封裝好的pywin32。

另外還是那句話(huà),Linux上執(zhí)行需要有顯示器,我以我阿里云上的centos為例。

如何用python實(shí)現(xiàn)復(fù)制粘貼功能

提示我們無(wú)法打開(kāi)顯示器,因?yàn)楦揪蜎](méi)有。 當(dāng)然,感覺(jué)這個(gè)功能也沒(méi)多大用,當(dāng)做興趣了解一下就行。

以上就是如何用python實(shí)現(xiàn)復(fù)制粘貼功能的詳細(xì)內(nèi)容,更多關(guān)于python實(shí)現(xiàn)復(fù)制粘貼功能的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 中宏网-今日新闻-财经新闻 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 商秀—企业短视频代运营_抖音企业号托管 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 云杂志网-学术期刊-首页 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 吊篮式|移动式冷热冲击试验箱-二槽冷热冲击试验箱-广东科宝 | 共享雨伞_共享童车_共享轮椅_共享陪护床-共享产品的领先者_有伞科技 | 土壤养分检测仪|土壤水分|土壤紧实度测定仪|土壤墒情监测系统-土壤仪器网 | 山东臭氧发生器,臭氧发生器厂家-山东瑞华环保设备 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 鑫达滑石-辽宁鑫达滑石集团| 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 餐饮加盟网_特色餐饮连锁加盟店-餐饮加盟官网 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 贝壳粉涂料-内墙腻子-外墙腻子-山东巨野七彩贝壳漆业中心 | 400电话_400电话申请_866元/年_【400电话官方业务办理】-俏号网 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 营养师网,营养师考试时间,报名入口—网站首页 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 武汉创亿电气设备有限公司_电力检测设备生产厂家 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 河南彩印编织袋,郑州饲料编织袋定制,肥料编织袋加工厂-盛军塑业 河南凯邦机械制造有限公司 | 上海质量认证办理中心 |