Может ли python отправлять текст в буфер обмена Mac
Вопрос
Я бы хотел, чтобы моя программа на Python поместила некоторый текст в буфер обмена Mac.
Возможно ли это?
Решение
Новый ответ .
Эта страница предлагает:
Реализация для всех Mac OS X Версии
Другой модуль Mac (MacSharedClipboard.py, в листинге 4) реализует интерфейс буфера обмена на вершина двух программ командной строки называется pbcopy (который копирует текст в буфер обмена) и pbpaste (который вставляет любой текст в Буфер обмена). Префикс "pb" обозначает & Quot; картонная, & Quot; термин Mac для Буфер обмена.
Старый ответ .
Видимо так:
http://code.activestate.com/recipes/410615/
- простой скрипт, демонстрирующий, как это сделать.
Редактировать: только что понял, что это зависит от углерода, поэтому не может быть идеальным ... зависит от того, для чего вы его используете.
Другие советы
Как записать строку Unicode в буфер обмена Mac:
import subprocess
def write_to_clipboard(output):
process = subprocess.Popen(
'pbcopy', env={'LANG': 'en_US.UTF-8'}, stdin=subprocess.PIPE)
process.communicate(output.encode('utf-8'))
Как прочитать строку Unicode из буфера обмена Mac:
import subprocess
def read_from_clipboard():
return subprocess.check_output(
'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
Работает как на Python 2.7, так и на Python 3.4.
Следующий код использует PyObjC (http://pyobjc.sourceforge.net/)
from AppKit import NSPasteboard, NSArray
pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
Как описано в документации Cocoa, копирование требует трехэтапного :
- достань картонную коробку
- очистите его
- наполни его
Вы заполняете картонную коробку массивом объектов (здесь a
содержит только одну строку).
Простой способ:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
Кроссплатформенный способ:
https://stackoverflow.com/a/4203897/805627
from Tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.destroy()
Я знаю, что это старый пост, но я нашел очень элегантное решение этой проблемы.
Существует библиотека с именем PyClip , которую можно найти по адресу https: / /github.com/georgefs/pyclip-copycat . р>
Синтаксис довольно прост (пример из репозитория Github):
import clipboard
# copy some text to the clipboard
clipboard.copy('blah blah blah')
# get the text currently held in the clipboard
text = clipboard.paste()
как только вы передадите clipboard.copy ('foo')
, вы можете просто cmd + v получить текст
если вы просто хотите поместить текст в буфер обмена Mac, вы можете использовать команду оболочки pbcopy.