Pergunta

Eu gostaria meu programa python para colocar algum texto na área de transferência Mac.

Isso é possível?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top