Kann Python Text in die Zwischenablage Mac senden
Frage
Ich würde mein Python-Programm möchte einen Text in der Mac-Zwischenablage zu stellen.
Ist das möglich?
Lösung
Neue Antwort:
Diese Seite schlägt vor:
Implementierung für alle Mac OS X Versionen
Die andere Mac-Modul (MacSharedClipboard.py, 4 in Listing) implementiert die Zwischenablage-Schnittstelle auf oben von zwei Kommandozeilen-Programme genannt pbcopy (die Kopien Text Die Zwischenablage) und pbpaste (die Pasten, was Text in der ist Zwischenablage). Die Vorsilbe „pb“ steht für „Pappe“, die Mac Bezeichnung für Zwischenablage.
Alt Antwort:
Offenbar so:
http://code.activestate.com/recipes/410615/
ist ein einfaches Skript zeigt, wie es zu tun.
Edit:. Nur erkannte dies auf Kohlenstoff basiert, so ist vielleicht nicht ideal sein ... ein bisschen darauf an, was Sie verwenden es für
Andere Tipps
Wie eine Unicode-Zeichenfolge an die Mac-Zwischenablage schreiben:
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'))
Wie eine Unicode-Zeichenfolge aus der Mac-Zwischenablage lesen:
import subprocess
def read_from_clipboard():
return subprocess.check_output(
'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
funktioniert sowohl Python 2.7 und Python 3.4.
Der folgende Code Verwendung PyObjC ( http://pyobjc.sourceforge.net/ )
from AppKit import NSPasteboard, NSArray
pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
erklärt in Cocoa Dokumentation , Kopieren erfordert drei Schritt:
- erhalten die Pappe
- clear it
- füllen
Sie füllen den Karton mit einer Reihe von Objekt (hier a
enthalten nur eine Zeichenkette).
Eine einfache Art und Weise:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
Eine Cross-Plattform Art und Weise:
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()
Ich weiß, das ist ein älterer Beitrag, aber ich habe eine sehr elegante Lösung für dieses Problem gefunden.
Es gibt eine Bibliothek mit dem Namen PyClip , die unter https gefunden werden kann: / /github.com/georgefs/pyclip-copycat .
Die Syntax ist ziemlich einfach (Beispiel aus dem Github Repo):
import clipboard
# copy some text to the clipboard
clipboard.copy('blah blah blah')
# get the text currently held in the clipboard
text = clipboard.paste()
, sobald Sie clipboard.copy('foo')
bestanden haben können Sie einfach cmd + v , um den Text erhalten
, wenn Sie nur Text in die Zwischenablage mac setzen möchten, können Sie die Shell des pbcopy Befehl verwenden.