亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

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

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

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

首先是安裝:pip install pywin32。

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

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

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

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

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

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

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

實現(xiàn)粘貼

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

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

我們上面的模塊是win32家族,所以它只適用于Windows系統(tǒng),不適用于Linux和macOS。那么如果我想在Linux和macOS中實現(xiàn)怎么辦呢?也很簡單,事實上,這兩個系統(tǒng)實現(xiàn)起來反而會更簡單,因為自帶了相關(guān)的命令。

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

import subprocess# 實現(xiàn)拷貝def copy(text): p = subprocess.Popen(['pbcopy', 'w'], stdin=subprocess.PIPE, close_fds=True) # 將內(nèi)容(text)拷貝起來 p.communicate(input=text.encode('utf-8')) # 實現(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實現(xiàn)復(fù)制粘貼

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

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

import subprocess# 實現(xiàn)拷貝def copy(text): p = subprocess.Popen( ['xclip', '-selection', 'c'], stdin=subprocess.PIPE, close_fds=True ) p.communicate(input=text.encode('utf-8')) # 實現(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還是比較簡單的,因為操作系統(tǒng)提供了這個命令,我們可以直接使用。但是Windows則沒有提供,所以需要使用ctypes,或者使用封裝好的pywin32。

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

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

提示我們無法打開顯示器,因為根本就沒有。 當(dāng)然,感覺這個功能也沒多大用,當(dāng)做興趣了解一下就行。

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 精品国产免费一区二区三区 | 日韩a级一片在线观看 | 国产三级在线观看视频不卡 | 香蕉视频在线观看网站 | 哪里可以看黄色播放免费 | 国产一区二区不卡免费观在线 | 国产精品亚洲精品一区二区三区 | 国产日产欧产精品精品推荐在线 | 97麻豆精品国产自产在线观看 | 国产美女主播一级成人毛片 | 亚洲精品久久玖玖玖玖 | 伊人久久大香线焦综合四虎 | 国产三级一区二区三区 | 国产福利一区二区 | 亚洲精品入口一区二区乱 | 久久99精品久久久久子伦小说 | 91视频免费观看 | 一级做a爰片性色毛片2021 | 香蕉久久网站 | 亚洲第九十九页 | 精品一区二区国语对白 | 亚洲欧美网址 | 婷婷综合影院 | 成年美女黄网站色大片免费看 | 久久精品国产99国产精品亚洲 | 中日韩在线视频 | 国产人妖在线观看一区二区 | 99视频有精品视频免费观看 | 成年女人毛片免费观看不卡 | 精品视频一区二区三区在线播放 | 天天色综合三 | 韩国毛片免费看 | 亚洲精品一区久久狠狠欧美 | 日韩三级在线观看 | 国产观看精品一区二区三区 | 色黄网站在线观看 | 岛国在线123456 | 精品国产综合 | 久久线看观看精品香蕉国产 | www小视频| 一区影院 |