Mi piacerebbe che il mio programma python inserisse del testo negli appunti del Mac.Python può inviare testo agli appunti del Mac
È possibile?
Mi piacerebbe che il mio programma python inserisse del testo negli appunti del Mac.Python può inviare testo agli appunti del Mac
È possibile?
Nuova risposta:
This page suggerisce:
Attuazione per Tutti Mac OS X versioni
l'altro modulo Mac (MacSharedClipboard.py, nel Listato 4) implementa l'interfaccia degli Appunti su primo di due comandi -line programmi chiamato pbcopy (che copia il testo in negli appunti) e pbpaste (che incolla qualunque testo sia negli appunti ). Il prefisso "pb" sta per "pasteboard", il termine Mac per gli appunti .
Vecchia risposta:
A quanto pare così:
http://code.activestate.com/recipes/410615/
è un semplice script che dimostra come farlo.
Modifica: Ho appena realizzato che questo si basa su Carbon, quindi potrebbe non essere l'ideale ... dipende un po 'da cosa lo stai usando.
Il seguente utilizzare il codice PyObjC (http://pyobjc.sourceforge.net/)
from AppKit import NSPasteboard, NSArray
pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
Come explained in Cocoa documentation, la copia richiede tre fasi:
Si riempie il tavolo di montaggio con una matrice di oggetto (qui a
contiene solo una stringa).
se si desidera semplicemente inserire il testo negli appunti Mac, è possibile utilizzare il comando pbcopy della shell.
Se si tratta di un comando python super-short, è possibile reindirizzare l'output del comando a pbcopy in questo modo: python -c "print 'hi'" | pbcopy. Puoi anche includere una serie di comandi consecutivi: python -c 'import time, sys; sys.stdout.write (str (int (time.time()))) '| pbcopy. Questo copia il tempo di unix senza la nuova riga finale negli appunti. –
Un modo semplice:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
Un modo cross-platform:
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()
Questo non sembra funzionare sul mio OS X 10.8. – Vojto
Il blocco numero 1 probabilmente non funziona se il testo da scrivere negli appunti contiene caratteri Unicode o shell come | o &. Il blocco codice n. 2 crea un'icona dock aggiuntiva su OS X. Ho fornito la mia risposta a questa domanda che non presenta questi problemi. –
Come scrivere una stringa Unicode negli appunti di 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 Mac:
import subprocess
def read_from_clipboard():
return subprocess.check_output(
'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
funziona sia su Python 2.7 e Python 3.4.
non ho idea del motivo per cui questo diventa così poco amore, è di gran lunga il metodo più elegante e affidabile in questa pagina – zsero
Perché grazie. Avevo bisogno di scrivere questa funzione per spingere il testo giapponese negli appunti, quindi ho dovuto farlo funzionare con Unicode. –
Eccellente. Molto utile in una funzione di utilità per la pulizia di estratti da file pdf JSTOR; Grazie. – cphlewis
So che questo è un post più vecchio, ma ho trovato una soluzione molto elegante a questo problema.
C'è una libreria denominata PyClip, che può essere trovata a https://github.com/georgefs/pyclip-copycat.
La sintassi è abbastanza semplice (ad esempio dalla 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()
una volta superato clipboard.copy('foo')
si può solo cmd + v per ottenere il testo
non ho mai pensato di usare uno strumento da riga di comando. Perfetto, grazie –
Questo esempio di codice non gestisce correttamente le stringhe Unicode. Ho fornito una soluzione compatibile con Unicode come risposta separata. –