91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用python實現復制粘貼功能

發布時間:2021-03-12 17:21:08 來源:億速云 閱讀:1559 作者:TREX 欄目:開發技術

這篇文章主要介紹“怎么用python實現復制粘貼功能”,在日常操作中,相信很多人在怎么用python實現復制粘貼功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用python實現復制粘貼功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

楔子

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

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

首先是安裝:pip install pywin32

實現復制

下面我們來看看如何使用這個模塊實現復制功能,另外關于pywin32這個模塊,它的家族非常的龐大。

怎么用python實現復制粘貼功能

里面有很多的win32xxx.pyd,我們直接調用就行。

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

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

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

實現粘貼

復制我們實現了,下面來看看怎么實現粘貼。

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

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

macOS實現復制粘貼

import subprocess

# 實現拷貝
def copy(text):
  p = subprocess.Popen(["pbcopy", "w"], stdin=subprocess.PIPE, close_fds=True)
  # 將內容(text)拷貝起來
  p.communicate(input=text.encode("utf-8"))
   
# 實現粘貼  
def paste():
  p = subprocess.Popen(["pbpaste", "r"], stdout=subprocess.PIPE, close_fds=True)
  stdout, stderr = p.communicate()
  #返回粘貼內容
  return stdout.decode("utf-8")

Linux實現復制粘貼

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

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

import subprocess

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

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

怎么用python實現復制粘貼功能

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

到此,關于“怎么用python實現復制粘貼功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

互助| 漳平市| 垫江县| 霍邱县| 钦州市| 外汇| 夏河县| 平湖市| 额尔古纳市| 临澧县| 扎兰屯市| 蓝田县| 方山县| 绵竹市| 肇东市| 太白县| 关岭| 金山区| 佛冈县| 玛沁县| 昌图县| 铜陵市| 文成县| 保康县| 高州市| 县级市| 基隆市| 涿鹿县| 伊宁市| 连云港市| 鄂尔多斯市| 桦南县| 马边| 普格县| 黄陵县| 成武县| 乌兰浩特市| 青河县| 嘉定区| 崇左市| 宁武县|