Puede python enviar texto al portapapeles de Mac

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

es posible?

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 progtwigs 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 acabo de dar cuenta de que depende de Carbon, por lo que podría no ser lo ideal … depende un poco de para qué lo estés usando

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).

Una forma sencilla:

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

Un camino multiplataforma:
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() 

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 syntax es bastante simple (ejemplo del repository 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.