Подтвердить что ты не робот

Может ли python отправлять текст в буфер обмена Mac

Я хочу, чтобы моя программа python помещала некоторый текст в буфер обмена Mac.

Возможно ли это?

4b9b3361

Ответ 1

Новый ответ:

Эта страница предлагает:

Реализация для всех Mac OS X Версии

Другой модуль Mac (MacSharedClipboard.py, в листинге 4) реализует интерфейс буфера обмена на верхняя часть двух программ командной строки называется pbcopy (который копирует текст в буфер обмена) и pbpaste ( вставляет любой текст в Буфер обмена). Префикс "pb" означает "картон", термин Mac для Буфер обмена.

Старый ответ:

Видимо так:

http://code.activestate.com/recipes/410615/

является простым script, демонстрирующим, как это сделать.

Edit: Просто понял, что это зависит от Carbon, поэтому может быть не идеальным... немного зависит от того, для чего вы его используете.

Ответ 2

Как написать строку Юникода в буфер обмена 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.

Ответ 3

В следующем коде используется 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 содержит только одну строку).

Ответ 4

Простой способ:

cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)

Кросс-платформенный способ:
fooobar.com/questions/42995/...

from Tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.destroy()

Ответ 5

Я знаю, что это более старая статья, но я нашел очень элегантное решение этой проблемы.

Существует библиотека с именем 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, чтобы получить текст

Ответ 6

Если вы просто хотите поместить текст в буфер обмена Mac, вы можете использовать команду pbcopy оболочки.