简体   繁体   中英

Python get mac clipboard contents

How can I, using Python (2.7) get the contents of the Mac clipboard. Is there a better way than making a wrapper around pbpaste?

Thanks!

PyObjC is the way to go:

#!/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)

This only supports text and will return None otherwise. You can extend it to support other data types as well, see NSPastboard Class Reference .

Have you looked at the xerox module?
It is supposed to support windows, OS X and Linux


Usage is as follows:

xerox.copy(u'some string')

And to paste:

>>> xerox.paste()
u'some string'

The problem with the xerox module and most code samples I've found for "get the contents of the Mac clipboard" is that they return plain text only. They don't support hyperlinks, styles, and such, so they're not really able to access the full contents provided by apps like Microsoft Word and Google Chrome.

Standing on the shoulders of others, I finally figured out how to do this. The resulting richxerox module is available on PyPI and Bitbucket .

Though this question is old, I'm leaving breadcrumbs here because I consistently re-found this page via Google while searching for the answer.

If you have installed pandas, you can use the function in pandas as follows:

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

Do you know PyObjC ? I guess you could use it to write a Py wrapper which interfaces with NSPasteboard . This might be more "elegant" than shelling out to pbpaste.

You can grab the clipboard (and the screen) with PIL/Pillow on a Mac like this:

from PIL import ImageGrab, Image

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

Just for completeness, you can grab the screen like this:

screen = ImageGrab.grab()

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM