python macos clipboard

python - pyperclip



Puede python enviar texto al portapapeles de Mac (6)

Me gustaría que mi programa de Python coloque algún texto en el portapapeles de Mac.

es posible?


Cómo escribir una cadena Unicode en el portapapeles de 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''))

Cómo leer una cadena Unicode desde el portapapeles de Mac:

import subprocess def read_from_clipboard(): return subprocess.check_output( ''pbpaste'', env={''LANG'': ''en_US.UTF-8''}).decode(''utf-8'')

Funciona tanto en Python 2.7 como en Python 3.4.


El siguiente código utiliza PyObjC ( http://pyobjc.sourceforge.net/ )

from AppKit import NSPasteboard, NSArray pb = NSPasteboard.generalPasteboard() pb.clearContents() a = NSArray.arrayWithObject_("hello world") pb.writeObjects_(a)

Como se explica en la documentación de Cocoa , la copia requiere tres pasos:

  • obtener el cartón
  • Limpialo
  • llenarlo

Usted llena el área de trabajo con una matriz de objetos (aquí a contiene solo una cadena).


Sé que este es un post más antiguo, pero he encontrado una solución muy elegante para este problema.

Hay una biblioteca llamada PyClip , que se puede encontrar en https://github.com/georgefs/pyclip-copycat .

La sintaxis es bastante simple (ejemplo del repositorio de 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()

una vez que haya pasado clipboard.copy(''foo'') puede simplemente cmd + v para obtener el texto


Si solo deseaba poner texto en el portapapeles de mac, podría usar el comando pbcopy del shell.


Una forma sencilla:

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

Un camino multiplataforma:
https://.com/a/4203897/805627

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


Nueva respuesta:

Esta página sugiere:

Implementación para todas las versiones de Mac OS X

El otro módulo de Mac (MacSharedClipboard.py, en el Listado 4) implementa la interfaz del portapapeles encima de dos programas de línea de comando llamados pbcopy (que copia el texto en el portapapeles) y pbpaste (que pega cualquier texto en el portapapeles). El prefijo "pb" significa "pasteboard", el término de Mac para el portapapeles.

Respuesta antigua:

Aparentemente si:

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

Es un simple script que demuestra cómo hacerlo.

Edición: Me di cuenta de que esto depende de Carbon, por lo que podría no ser lo ideal ... depende un poco de para qué lo estés usando.