這篇文章主要介紹“怎么用python實現(xiàn)復制粘貼功能”,在日常操作中,相信很多人在怎么用python實現(xiàn)復制粘貼功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用python實現(xiàn)復制粘貼功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供清河網(wǎng)站建設、清河做網(wǎng)站、清河網(wǎng)站設計、清河網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、清河企業(yè)網(wǎng)站模板建站服務,十余年清河做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。pandas里面有這么一個方法:pd.read_clipboard,可以根據(jù)你復制的內(nèi)容生成DataFrame。是的,就是我們平時選中,然后復制、或者Ctrl+C時拷貝的內(nèi)容,所以比較神奇,那么pandas到底是怎么做到的,它是怎么讀出我們使用Ctrl +C復制的內(nèi)容呢。
看了一下源碼,非常的復雜,方法是使用了ctypes,然后調(diào)用了操作系統(tǒng)的一個動態(tài)庫實現(xiàn)的。ctypes是專門來調(diào)用C、C++使用的,但是我們知道Python有一個pywin32模塊,對于Windows操作系統(tǒng)提供的接口進行了封裝。所以下面我們使用pywin32來實現(xiàn)我們平時使用的復制粘貼功能。
首先是安裝:pip install pywin32
。
下面我們來看看如何使用這個模塊實現(xiàn)復制功能,另外關于pywin32這個模塊,它的家族非常的龐大。
里面有很多的win32xxx.pyd,我們直接調(diào)用就行。
# win32clipboard專門用來復制粘貼的 import win32clipboard as wcb import win32con as wc # 打開復制粘貼板 wcb.OpenClipboard() # 我們之前可能已經(jīng)Ctrl+C了,這里是清空目前Ctrl+C復制的內(nèi)容。但是經(jīng)過測試,這一步即使沒有也無所謂 wcb.EmptyClipboard() # 將內(nèi)容寫入復制粘貼板,第一個參數(shù)win32con.CF_TEXT不用管,我也不知道它是干什么的 # 關鍵第二個參數(shù),就是我們要復制的內(nèi)容,一定要傳入字節(jié) wcb.SetClipboardData(wc.CF_TEXT, "古明地覺世界第一可愛".encode("gbk")) # 關閉復制粘貼板 wcb.CloseClipboard()
然后我們 Ctrl+V 粘貼就會得到 "古明地覺世界第一可愛" 這個字符串,再強調(diào)一次,這里不能傳入字符串、而是要傳入字節(jié)。如果傳入字符串,那么中文會得到亂碼、ascii文本只會得到第一個字符。
另外這里要使用 gbk,因為我當前操作系統(tǒng)默認編碼使用的是gbk,所以會對我們輸入的字節(jié)使用 gbk 解碼。因此如果使用utf-8編碼的話,那么粘貼得到的依舊是亂碼。當然具體根據(jù)你當前的機器決定。
復制我們實現(xiàn)了,下面來看看怎么實現(xiàn)粘貼。
# win32clipboard專門用來復制粘貼的 import win32clipboard as wcb import win32con as wc # 打開復制粘貼板 wcb.OpenClipboard() # 獲取粘貼板內(nèi)容,既然是獲取,那么只需要一個參數(shù)即可。 # 會返回已經(jīng)使用Ctrl+C復制得到的內(nèi)容 data = wcb.GetClipboardData(wc.CF_TEXT) # 關閉復制粘貼板 wcb.CloseClipboard() # 得到的依舊是字節(jié) """ 我們在"實現(xiàn)復制"的時候說過,因為Ctrl+V默認使用gbk解碼,所以在模擬Ctrl+C的時候我們也要傳入使用gbk編碼的字符串 那么在"實現(xiàn)粘貼"的時候也是一樣,我們使用Ctrl+C復制的時候,也會使用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)起來反而會更簡單,因為自帶了相關的命令。
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)復制粘貼實際上意義不大,因為實現(xiàn)復制粘貼的功能的一個前提是你必須要有顯示器。
而公司使用的服務器肯定不會帶顯示器的,使用的時候都是通過xshell遠程連接。但是Linux上也提供了相應的命令,叫xclip,當然這個命令不是自帶的,使用的時候可能還要安裝: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)復制粘貼功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站標題:怎么用python實現(xiàn)復制粘貼功能-創(chuàng)新互聯(lián)
文章分享:http://aaarwkj.com/article10/deohdo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站導航、標簽優(yōu)化、定制開發(fā)、網(wǎng)站設計、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容