当前位置:  开发笔记 > 编程语言 > 正文

如何从python中读取(windows)剪贴板中的文本?

如何解决《如何从python中读取(windows)剪贴板中的文本?》经验,为你挑选了7个好方法。

如何从python中读取(windows)剪贴板中的文本?



1> Sakin..:

您可以使用名为win32clipboard的模块,它是pywin32的一部分.

这是一个首先设置剪贴板数据然后获取它的示例:

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'语句?
值得注意的是,在py34,win7中,如果没有先前调用EmptyClipboard,SetClipboardText就无法工作

2> kmonsoor..:

您可以通过内置模块Tkinter轻松完成此操作,该模块基本上是一个GUI库.此代码创建一个空白小部件以从OS获取剪贴板内容.

#from tkinter import Tk  # Python 3
from Tkinter import Tk
Tk().clipboard_get()


请在此代码中添加注释,并(可能)链接到相关文档.
应该是``tkinter``而不是``Tkinter``。在其他情况下,它在我的python 3.7.3 64位win10上不起作用。

3> Buttons840..:

我已经看到很多使用win32模块的建议,但是Tkinter提供了我见过的最简单和最简单的方法,如下文所示:如何使用Python将字符串复制到Windows上的剪贴板?

另外,Tkinter位于python标准库中.


一些代码将通过Tkinter获取剪贴板值:来自Tkinter import Tk [\nl] r = Tk()[\nl] result = r.selection_get(selection ="CLIPBOARD")[\nl] r.destroy()

4> kichik..:

如果您不想安装额外的软件包,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())



5> born..:

上面最受欢迎的答案是奇怪的,它只是简单地清除剪贴板然后获取内容(然后是空的).可以清除剪贴板以确保某些剪贴板内容类型(如"格式化文本")不会"覆盖"您要保存在剪贴板中的纯文本内容.

下面的代码用空格替换剪贴板中的所有换行符,然后删除所有双空格,最后将内容保存回剪贴板:

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()



6> np8..:

我发现这是从python访问剪贴板的最简单方法:

1)安装pyperclip: pip install pyperclip

2)用法:

import pyperclip

s = pyperclip.paste()
pyperclip.copy(s)

# the type of s is string

在Win10 64位,Python 3.5上测试。似乎也可以使用非ASCII字符。经过测试的字符包括±°©©???????åäö



7> 小智..:

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()

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有