欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解如何使用Python實(shí)現(xiàn)復(fù)制粘貼的功能

 更新時間:2023年01月03日 11:57:03   作者:古明地覺  
pandas?里面有一個?pd.read_clipboard?函數(shù),可以根據(jù)你復(fù)制的內(nèi)容生成DataFrame。本文就利用這個函數(shù)實(shí)現(xiàn)復(fù)制粘貼的功能,感興趣的可以了解一下

楔子

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

看了一下源碼,不同的操作系統(tǒng)使用的復(fù)制方式不同,Windows 比較復(fù)雜,方法是使用了ctypes,然后調(diào)用了操作系統(tǒng)的一個動態(tài)庫實(shí)現(xiàn)的;而 macOS 和 Linux 比較簡單,調(diào)用的是內(nèi)置的命令。

下面我們來看看如何在這三個系統(tǒng)上實(shí)現(xiàn)復(fù)制粘貼的功能。

Windows 上的復(fù)制粘貼

我們說 Windows 是使用 ctypes 調(diào)用動態(tài)庫實(shí)現(xiàn)的,比較麻煩。但是我們知道 Python 有一個 pywin32 模塊,對于 Windows 操作系統(tǒng)提供的接口進(jìn)行了封裝。所以在 Windows 上我們會使用 pywin32 來實(shí)現(xiàn)復(fù)制粘貼功能。

該模塊直接通過 pip install pywin32 安裝即可。

import?win32clipboard?as?wcb
import?win32con?as?wc

#?打開復(fù)制粘貼板
wcb.OpenClipboard()
#?我們之前可能已經(jīng)?Ctrl?+?C?了
#?這里是清空目前?Ctrl?+?C?復(fù)制的內(nèi)容
#?但顯然沒有這一步也無所謂,因?yàn)榈诙螐?fù)制會覆蓋第一次復(fù)制的內(nèi)容
wcb.EmptyClipboard()
#?將內(nèi)容寫入復(fù)制粘貼板,第一個參數(shù)是?win32con.CF_TEXT
#?第二個參數(shù)是我們要復(fù)制的內(nèi)容,編碼的時候指定為?"gbk"
wcb.SetClipboardData(wc.CF_TEXT,?"古明地覺".encode("gbk"))
#?關(guān)閉復(fù)制粘貼板
wcb.CloseClipboard()

然后我們 Ctrl+V 粘貼就會得到 "古明地覺" 這個字符串,另外編碼的時候要使用 gbk,因?yàn)槲耶?dāng)前操作系統(tǒng)默認(rèn)編碼使用的是 gbk,所以會對我們輸入的字節(jié)使用 gbk 解碼。因此如果使用 utf-8 編碼的話,那么粘貼之后得到的就會是亂碼。當(dāng)然具體編碼根據(jù)你當(dāng)前的機(jī)器決定。

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

import?win32clipboard?as?wcb
import?win32con?as?wc

wcb.OpenClipboard()
#?獲取粘貼板內(nèi)容,既然是獲取,那么只需要一個參數(shù)即可
#?會返回已經(jīng)使用?Ctrl?+?C?復(fù)制的內(nèi)容
data?=?wcb.GetClipboardData(wc.CF_TEXT)
#?關(guān)閉復(fù)制粘貼板
wcb.CloseClipboard()

#?然后隨便?Ctrl+C?拷貝一段內(nèi)容
#?下面就會將拷貝的內(nèi)容打印出來
print(data.decode("gbk"))

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

macOS 上的復(fù)制粘貼

macOS 自帶了相關(guān)命令,我們只需要通過 subprocess 模塊去調(diào)用即可,舉個例子:

非常簡單,那么代碼要如何實(shí)現(xiàn)呢?

import?subprocess

#?實(shí)現(xiàn)拷貝
def?copy(text):
????p?=?subprocess.Popen(["pbcopy",?"w"],
?????????????????????????stdin=subprocess.PIPE,
?????????????????????????close_fds=True)
????#?將內(nèi)容拷貝起來,注意?macOS?的編碼默認(rèn)是?utf-8
????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")

copy("古明地覺的編程教室")
print(paste())??#?古明地覺的編程教室

以上代碼在 macOS 上執(zhí)行,由于自帶了復(fù)制粘貼相關(guān)的命令,操作起來就比 Windows 方便多了。

Linux 上的復(fù)制粘貼

Linux 也提供了復(fù)制粘貼的命令,叫 xclip,但這個命令不是自帶的,我們需要使用 yum 安裝。

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")??

但其實(shí)在 Linux 上通過命令實(shí)現(xiàn)復(fù)制粘貼沒什么意義,因?yàn)槲覀兌际峭ㄟ^ SSH 遠(yuǎn)程連接到公司的服務(wù)器,這種情況下 xclip 是不生效的。

當(dāng)然,感覺這個功能也沒多大用,當(dāng)做興趣了解一下就行。

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

最后我們再來介紹一個模塊,叫 pyperclip,它對不同的操作系統(tǒng)的復(fù)制粘貼功能進(jìn)行了封裝,可以簡化我們的操作。舉個例子:

import?pyperclip

#?復(fù)制
pyperclip.copy("哼哼")
#?粘貼
print(pyperclip.paste())??#?哼哼?

還是很方便的,以后就可以使用這個模塊,自動幫我們屏蔽了操作系統(tǒng)間的差異。另外,這個模塊只支持復(fù)制文本。

到此這篇關(guān)于詳解如何使用Python實(shí)現(xiàn)復(fù)制粘貼的功能的文章就介紹到這了,更多相關(guān)Python復(fù)制粘貼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch框架之one_hot編碼函數(shù)解讀

    Pytorch框架之one_hot編碼函數(shù)解讀

    這篇文章主要介紹了Pytorch框架之one_hot編碼函數(shù)解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python?Fuzzywuzzy庫基本函數(shù)及模糊字符串匹配應(yīng)用實(shí)戰(zhàn)

    Python?Fuzzywuzzy庫基本函數(shù)及模糊字符串匹配應(yīng)用實(shí)戰(zhàn)

    fuzzywuzzy?是一個用于模糊字符串匹配的?Python?庫,它基于編輯距離算法,提供了多個函數(shù)來比較字符串之間的相似性,在實(shí)際開發(fā)中,字符串匹配是一項(xiàng)常見但具有挑戰(zhàn)性的任務(wù),用戶可能犯拼寫錯誤,使用縮寫或者輸入同義詞,因此,我們需要一種方法來處理這些情況
    2023-12-12
  • Python讀取xlsx文件的實(shí)現(xiàn)方法

    Python讀取xlsx文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python讀取xlsx文件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python字符串常規(guī)操作大全

    python字符串常規(guī)操作大全

    這篇文章主要給大家介紹了關(guān)于python字符串常規(guī)操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • conda虛擬環(huán)境下使用pyinstaller打包程序?yàn)閑xe文件全過程

    conda虛擬環(huán)境下使用pyinstaller打包程序?yàn)閑xe文件全過程

    pyinstaller是一個支持跨平臺使用的第三方庫,它可以將腳本執(zhí)行所需的模塊和庫,自動分析、收集并生成一個文件夾或者可執(zhí)行文件,這篇文章主要給大家介紹了關(guān)于conda虛擬環(huán)境下使用pyinstaller打包程序?yàn)閑xe文件的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Python中整數(shù)的緩存機(jī)制講解

    Python中整數(shù)的緩存機(jī)制講解

    今天小編就為大家分享一篇關(guān)于Python中整數(shù)的緩存機(jī)制講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 使用Python批量修改文件名的代碼實(shí)例

    使用Python批量修改文件名的代碼實(shí)例

    今天小編就為大家分享一篇關(guān)于使用Python批量修改文件名的代碼實(shí)例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • python使用beautifulsoup4爬取酷狗音樂代碼實(shí)例

    python使用beautifulsoup4爬取酷狗音樂代碼實(shí)例

    這篇文章主要介紹了python使用beautifulsoup4爬取酷狗音樂代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • python檢測代理ip是否有效問題

    python檢測代理ip是否有效問題

    這篇文章主要介紹了python檢測代理ip是否有效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python3隨機(jī)漫步生成數(shù)據(jù)并繪制

    Python3隨機(jī)漫步生成數(shù)據(jù)并繪制

    這篇文章主要為大家詳細(xì)介紹了Python3隨機(jī)漫步生成數(shù)據(jù)并繪制的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評論