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

StackOverflow https://stackoverflow.com/questions/1825692

  •  22-07-2019
  •  | 
  •  

Вопрос

Я бы хотел, чтобы моя программа на 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top