我如何使用Python(2.7)获取Mac剪贴板的内容?是否有比创建pbpaste包装器更好的方法?
谢谢!
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类参考。
您有没有看过xerox模块?
它应该支持Windows、OS X和Linux。
使用方法如下:
xerox.copy(u'一些字符串')
然后粘贴:
>>> xerox.paste()
u'一些字符串'
from pandas.io.clipboard import clipboard_get
text = clipboard_get()
pip
安装的版本(0.129)使用没有括号的 print
语句,它有 iteritems()
等等。它不兼容 Python 3,并且在 import richxerox
上出现错误。是否有一个版本我可以向 pip
请求以使其正常工作?哪一个版本?(我提问这个问题是因为我看到了一个几个月前关于最近版本破损的 bug 报告)。 - alexis129 > 6
:-) 我会获取正确的版本,谢谢。 (不幸的是,在我的 El Capitan 系统上,pip
未能构建 PyObjC,所以我将无法使用 Python 3 实际测试它。) - alexis你知道PyObjC吗?我猜你可以使用它编写一个Py封装器,与NSPasteboard进行接口交互。这可能比使用pbpaste更加"优雅"。
在 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")
print("剪贴板字符串:%s" % pbstring)
- magicrebirth