我如何使用Python(2.7)获取Mac剪贴板的内容。有没有比围绕pbpaste包装更好的方法?
谢谢!
答案 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
模块位于PyPI和Bitbucket。
虽然这个问题很老,但我在这里留下了面包屑,因为我在搜索答案的过程中一直通过谷歌重新找到这个页面。
答案 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()