Python получить содержимое буфера обмена Mac - PullRequest
13 голосов
/ 16 августа 2011

Как я могу, используя Python (2.7) получить содержимое буфера обмена Mac. Есть ли лучший способ сделать упаковку вокруг pbpaste?

Спасибо!

Ответы [ 5 ]

14 голосов
/ 29 ноября 2011

Вы смотрели на модуль xerox ?
Он должен поддерживать Windows, OS X и Linux


Использование выглядит следующим образом:

xerox.copy (u'some string ')

И вставить:

>>> xerox.paste ()
u'someстрока '

14 голосов
/ 30 ноября 2011

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 .

5 голосов
/ 07 августа 2012

Проблема с модулем xerox и большинством примеров кода, которые я нашел для «получения содержимого буфера обмена Mac», заключается в том, что они возвращают только простой текст.Они не поддерживают гиперссылки, стили и т. Д., Поэтому они не могут получить доступ ко всему содержимому, предоставляемому такими приложениями, как Microsoft Word и Google Chrome.

Стоя на плечах других, я наконец-то понял, как это сделать.Полученный модуль richxerox доступен для PyPI и Bitbucket .

Хотя этот вопрос старый, я оставляю здесь крошки, потому что я постоянно находил эту страницу через Google во время поиска ответа.

2 голосов
/ 16 августа 2011

Знаете ли вы PyObjC ?Я думаю, вы могли бы использовать его для написания оболочки Py, которая взаимодействует с NSPasteboard .Это может быть более «изящно», чем выкладывание на pbpaste.

0 голосов
/ 26 сентября 2018

Вы можете взять буфер обмена (и экран) с помощью PIL / Pillow на Mac следующим образом:

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...