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.