python获取剪切板内容_如何从python中读取(windows)剪贴板中的文本?
如何從python中讀取(windows)剪貼板中的文本?
如何從python中讀取(windows)剪貼板中的文本?
Foo42 asked 2019-06-22T21:38:33Z
10個(gè)解決方案
77 votes
您可以使用名為win32clipboard的模塊,它是pywin32的一部分。
這是一個(gè)首先設(shè)置剪貼板數(shù)據(jù)然后獲取它的示例:
import win32clipboard
# set clipboard data
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText('testing 123')
win32clipboard.CloseClipboard()
# get clipboard data
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print data
文檔中的一個(gè)重要提醒:
窗口檢查完畢或更改剪貼板后,?? 通過(guò)調(diào)用CloseClipboard關(guān)閉剪貼板。 這使其他?? 用于訪問(wèn)剪貼板的窗口。 不要在上面放置物體?? 調(diào)用CloseClipboard后的剪貼板。
Sakin answered 2019-06-22T21:39:08Z
21 votes
您可以通過(guò)內(nèi)置模塊Tkinter輕松完成此操作,該模塊基本上是一個(gè)GUI庫(kù)。 此代碼創(chuàng)建一個(gè)空白小部件以從OS獲取剪貼板內(nèi)容。
#from tkinter import Tk # Python 3
from Tkinter import Tk
Tk().clipboard_get()
kmonsoor answered 2019-06-22T21:39:32Z
19 votes
我已經(jīng)看到很多使用win32模塊的建議,但是Tkinter提供了我見(jiàn)過(guò)的最簡(jiǎn)單,最簡(jiǎn)單的方法,如下文所示:如何使用Python將字符串復(fù)制到Windows上的剪貼板?
另外,Tkinter位于python標(biāo)準(zhǔn)庫(kù)中。
Buttons840 answered 2019-06-22T21:40:03Z
11 votes
上面最受歡迎的答案是奇怪的,它只是簡(jiǎn)單地清除剪貼板然后獲取內(nèi)容(然后是空的)。 可以清除剪貼板以確保某些剪貼板內(nèi)容類(lèi)型(如“格式化文本”)不會(huì)“覆蓋”您要保存在剪貼板中的純文本內(nèi)容。
下面的代碼用空格替換剪貼板中的所有換行符,然后刪除所有雙空格,最后將內(nèi)容保存回剪貼板:
import win32clipboard
win32clipboard.OpenClipboard()
c = win32clipboard.GetClipboardData()
win32clipboard.EmptyClipboard()
c = c.replace('\n', ' ')
c = c.replace('\r', ' ')
while c.find(' ') != -1:
c = c.replace(' ', ' ')
win32clipboard.SetClipboardText(c)
win32clipboard.CloseClipboard()
born answered 2019-06-22T21:40:35Z
10 votes
如果您不想安裝額外的軟件包,ctypes也可以完成工作。
import ctypes
CF_TEXT = 1
kernel32 = ctypes.windll.kernel32
user32 = ctypes.windll.user32
user32.OpenClipboard(0)
if user32.IsClipboardFormatAvailable(CF_TEXT):
data = user32.GetClipboardData(CF_TEXT)
data_locked = kernel32.GlobalLock(data)
text = ctypes.c_char_p(data_locked)
print(text.value)
kernel32.GlobalUnlock(data_locked)
else:
print('no text in clipboard')
user32.CloseClipboard()
kichik answered 2019-06-22T21:40:58Z
3 votes
嘗試win32all包中的win32clipboard(如果你使用的是ActiveState Python,可能會(huì)安裝它)。
請(qǐng)參見(jiàn)此處的示例:[http://code.activestate.com/recipes/474121/]
Eli Bendersky answered 2019-06-22T21:41:29Z
2 votes
對(duì)于我的控制臺(tái)程序,上面使用tkinter的答案對(duì)我來(lái)說(shuō)并不適用,因?yàn)?destroy()總是給出錯(cuò)誤,:
無(wú)法調(diào)用“event”命令:應(yīng)用程序在執(zhí)行時(shí)已被銷(xiāo)毀...
或者當(dāng)使用.withdraw()時(shí),控制臺(tái)窗口沒(méi)有得到焦點(diǎn)。
要解決這個(gè)問(wèn)題,你還必須在.destroy()之前調(diào)用.update()。 例:
# Python 3
import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
r.withdraw()阻止幀顯示一毫秒,然后它將被銷(xiāo)毀,將焦點(diǎn)返回到控制臺(tái)。
user136036 answered 2019-06-22T21:42:21Z
2 votes
使用Pythons庫(kù)剪貼板
它的使用方式如下:
import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()
Dan answered 2019-06-22T21:42:51Z
2 votes
我發(fā)現(xiàn)這是從python訪問(wèn)剪貼板的最簡(jiǎn)單方法:
1)安裝pyperclip:pip install pyperclip
2)用法:
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
在Win3 64位,Python 3.5上測(cè)試。 似乎也適用于非ASCII字符。經(jīng)測(cè)試的字符包括±°?ααγθΔΨΦ???
np8 answered 2019-06-22T21:43:36Z
1 votes
python標(biāo)準(zhǔn)庫(kù)做到了......
try:
# Python2
import Tkinter as tk
except ImportError:
# Python3
import tkinter as tk
def getClipboardText():
root = tk.Tk()
# keep the window from showing
root.withdraw()
return root.clipboard_get()
Paul Sumpner answered 2019-06-22T21:44:00Z
總結(jié)
以上是生活随笔為你收集整理的python获取剪切板内容_如何从python中读取(windows)剪贴板中的文本?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: react实现汉堡_利用 React 高
- 下一篇: python3.8.5依赖的urllib