Python获取mac剪贴板内容

时间:2011-08-16 18:42:01

标签: python macos clipboard

我如何使用Python(2.7)获取Mac剪贴板的内容。有没有比围绕pbpaste包装更好的方法?

谢谢!

6 个答案:

答案 0 :(得分:14)

你看过xerox模块了吗? 它应该支持Windows,OS X和Linux


用法如下:

  

xerox.copy(你的字符串')

并粘贴:

  

>>> xerox.paste()
  你的字符串'

答案 1 :(得分:14)

PyObjC是要走的路:

#!/usr/bin/python

from AppKit import NSPasteboard, NSStringPboardType

pb = NSPasteboard.generalPasteboard()
pbstring = pb.stringForType_(NSStringPboardType)
print u"Pastboard string: %s".encode("utf-8") % repr(pbstring)

这仅支持文本,否则将返回None。您也可以将其扩展为支持其他数据类型,请参阅NSPastboard Class Reference

答案 2 :(得分:5)

xerox模块和我找到的“获取Mac剪贴板内容”的大多数代码示例的问题是它们只返回纯文本。它们不支持超链接,样式等,因此它们无法真正访问Microsoft Word和Google Chrome等应用程序提供的完整内容。

站在别人的肩膀上,我终于想出了如何做到这一点。生成的richxerox模块位于PyPIBitbucket

虽然这个问题很老,但我在这里留下了面包屑,因为我在搜索答案的过程中一直通过谷歌重新找到这个页面。

答案 3 :(得分:2)

你知道PyObjC吗?我想你可以用它来编写一个与NSPasteboard接口的Py包装器。这可能比抨击pbpaste更“优雅”。

答案 4 :(得分:0)

您可以在Mac上使用PIL / Pillow来抓取剪贴板(和屏幕),如下所示:

from PIL import ImageGrab, Image

# Grab clipboard and save to disk
clip = ImageGrab.grabclipboard()
clip.save("clip.png")

为完整起见,您可以像这样抓取屏幕:

screen = ImageGrab.grab()

# That results in this:
# <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=5120x2880 at 0x110BB7748>

# Save to disk
screen.save("screen.png")

答案 5 :(得分:0)

如果已安装熊猫,则可以按以下方式在熊猫中使用该功能:

from pandas.io.clipboard import clipboard_get
text = clipboard_get()