Pode python texto enviar para a área de transferência Mac
Pergunta
Eu gostaria meu programa python para colocar algum texto na área de transferência Mac.
Isso é possível?
Solução
Nova resposta:
Esta página sugere:
Implementação para Todos Mac OS X Versões
O outro módulo Mac (MacSharedClipboard.py, na Listagem 4) implementa a interface prancheta em top de dois programas de linha de comando chamado pbcopy (que copia texto a área de transferência) e pbpaste (que pastas de qualquer texto que está no prancheta). O prefixo "pb" significa "Papelão", o termo Mac para área de transferência.
resposta antiga:
Aparentemente sim:
http://code.activestate.com/recipes/410615/
é um script simples que demonstra como fazê-lo.
Edit:. Só percebi isso depende de carbono, por isso pode não ser ideal ... depende um pouco o que você está usando-o para
Outras dicas
Como escrever uma seqüência de caracteres Unicode para a área de transferência 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'))
Como ler uma seqüência de caracteres Unicode da área de transferência Mac:
import subprocess
def read_from_clipboard():
return subprocess.check_output(
'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
funciona tanto em Python 2.7 e Python 3.4.
A seguir, o uso de código PyObjC ( http://pyobjc.sourceforge.net/ )
from AppKit import NSPasteboard, NSArray
pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
Como explicou em Cocoa documentação , copiando requer três etapas:
- começar a área de transferência
- limpá-la
- preenchê-lo
Você preenche a área de transferência com uma variedade de objeto (aqui a
contém apenas uma string).
Uma maneira simples:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
Uma maneira de plataforma cruzada:
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()
Eu sei que este é um cargo mais velho, mas eu encontrei uma solução muito elegante para este problema.
Há uma biblioteca chamada PyClip , que pode ser encontrado em https: / /github.com/georgefs/pyclip-copycat .
A sintaxe é bastante simples (exemplo do repo 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()
Uma vez que você já passou clipboard.copy('foo')
você pode apenas cmd + v para obter o texto
Se você só queria colocar o texto na área de transferência mac, você poderia usar o comando pbcopy do shell.