Python può inviare testo negli Appunti del Mac
Domanda
Vorrei che il mio programma Python inserisse del testo negli Appunti del Mac.
È possibile?
Soluzione
Nuova risposta:
Questa pagina suggerisce:
Implementazione per tutti i Mac OS X Versioni
L'altro modulo Mac (MacSharedClipboard.py, nel Listato 4) implementa l'interfaccia degli appunti su in cima a due programmi da riga di comando chiamato pbcopy (che copia il testo in negli appunti) e pbpaste (che incolla qualunque testo sia presente nel clipboard). Il prefisso "pb" sta per & Quot; cartone, " il termine Mac per Appunti.
Vecchia risposta:
Apparentemente così:
http://code.activestate.com/recipes/410615/
è un semplice script che dimostra come farlo.
Modifica: ho appena realizzato che si basa su Carbon, quindi potrebbe non essere l'ideale ... dipende un po 'da cosa lo stai usando.
Altri suggerimenti
Come scrivere una stringa Unicode negli Appunti 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'))
Come leggere una stringa Unicode dagli Appunti di Mac:
import subprocess
def read_from_clipboard():
return subprocess.check_output(
'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
Funziona su Python 2.7 e Python 3.4.
Il codice seguente utilizza PyObjC ( http://pyobjc.sourceforge.net/ )
from AppKit import NSPasteboard, NSArray
pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
As spiegato nella documentazione di Cocoa , la copia richiede tre passaggi:
- ottieni il pannello di montaggio
- cancellalo
- riempilo
Riempi il pannello di controllo con una matrice di oggetti (qui a
contiene solo una stringa).
Un modo semplice:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
Un modo multipiattaforma:
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()
So che questo è un post precedente, ma ho trovato una soluzione molto elegante a questo problema.
Esiste una libreria denominata PyClip , che si trova in https: / /github.com/georgefs/pyclip-copycat .
La sintassi è piuttosto semplice (esempio dal repository 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()
dopo aver superato clipboard.copy ('pippo')
puoi semplicemente cmd + v per ottenere il testo
se volessi solo inserire del testo negli appunti del mac, potresti usare il comando pbcopy della shell.