如何使用Python从(Windows)剪贴板中读取文本?
如何使用Python从(Windows)剪贴板中读取文本?
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
文档中的重要提示:
当窗口完成检查或更改剪贴板时,请通过调用CloseClipboard关闭剪贴板。这将使其他窗口可以访问剪贴板。在调用CloseClipboard后不要将对象放置在剪贴板上。
with
语句的方法吗? - Norfeldt你可以通过内置的Tkinter模块轻松完成此操作,该模块基本上是一个GUI库。这段代码创建了一个空白部件,以从操作系统获取剪贴板内容。
from tkinter import Tk # Python 3
#from Tkinter import Tk # for Python 2.x
Tk().clipboard_get()
pywin32
(它有一系列已知的问题),这种方法要好得多。关于大小写差异的提示很好,一开始很难注意到。 - Adrian Larsonclipboard = a.clipboard_get();
a.destroy()```
- user2979044我发现pyperclip是从Python中访问剪贴板最简单的方法:
安装pyperclip:
pip install pyperclip
用法:
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
Pyperclip支持Windows、Linux和Mac,并且似乎也能处理非ASCII字符。 测试过的字符包括±°©©αβγθΔΨΦåäö
clipboard
包,它只有一行代码from pyperclip import copy, paste
,哈哈。pyperclib
是完美的解决方案。 - Lê Quang Duy如果您不想安装额外的软件包,ctypes
也可以完成工作。
import ctypes
CF_TEXT = 1
kernel32 = ctypes.windll.kernel32
kernel32.GlobalLock.argtypes = [ctypes.c_void_p]
kernel32.GlobalLock.restype = ctypes.c_void_p
kernel32.GlobalUnlock.argtypes = [ctypes.c_void_p]
user32 = ctypes.windll.user32
user32.GetClipboardData.restype = ctypes.c_void_p
def get_clipboard_text():
user32.OpenClipboard(0)
try:
if user32.IsClipboardFormatAvailable(CF_TEXT):
data = user32.GetClipboardData(CF_TEXT)
data_locked = kernel32.GlobalLock(data)
text = ctypes.c_char_p(data_locked)
value = text.value
kernel32.GlobalUnlock(data_locked)
return value
finally:
user32.CloseClipboard()
print(get_clipboard_text())
我看过很多使用win32模块的建议,但Tkinter提供了我见过的最简短和最容易的方法,就像在这篇帖子中所示:如何使用Python将字符串复制到Windows剪贴板?
此外,Tkinter是Python标准库中的一部分。
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()
Python标准库可以完成这个任务...
try:
# Python3
import tkinter as tk
except ImportError:
# Python2
import Tkinter as tk
def getClipboardText():
root = tk.Tk()
# keep the window from showing
root.withdraw()
return root.clipboard_get()
root.quit()
。 - kakyo# Python 3
import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
方法防止窗口在毫秒级别内显示,然后被销毁,将焦点返回给控制台。使用Python库Clipboard
它的使用方法非常简单:
import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()
from pyperclip import copy, paste
。 - pbreachimport pyperclip as clipboard
- Johnpyperclip
模块将一些代码复制到剪贴板中,以此来创建clipboard
模块! - Andrewimport pandas as pd
df = pd.read_clipboard()
pandas.io.clipboard.clipboard_get()
中,如果您需要文本而无需解析它,则更有用。 - Yuval