PythonはMacのクリップボードにテキストを送信できます
質問
PythonプログラムでMacのクリップボードにテキストを配置したいです。
これは可能ですか?
解決
新しい回答:
このページの推奨事項:
すべてのMac OS Xの実装 バージョン
他のMacモジュール (リスト4のMacSharedClipboard.py) クリップボードインターフェースを実装します 2つのコマンドラインプログラムのトップ pbcopy(テキストを クリップボード)とpbpaste(これは にあるテキストを貼り付けます クリップボード)。プレフィックス" pb"を意味する "ペーストボード" Macの用語 クリップボード。
古い回答:
どうやら:
http://code.activestate.com/recipes/410615/
は、その方法を示す簡単なスクリプトです。
編集:これはCarbonに依存しているため、理想的ではないかもしれないことに気付きました...使用目的によって少し異なります。
他のヒント
Unicode文字列を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'))
MacクリップボードからUnicode文字列を読み取る方法:
import subprocess
def read_from_clipboard():
return subprocess.check_output(
'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
Python 2.7とPython 3.4の両方で動作します。
次のコードではPyObjCを使用しています( http://pyobjc.sourceforge.net/ )
from AppKit import NSPasteboard, NSArray
pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
As Cocoaのドキュメントで説明、コピーには3つのステップが必要です:
- ペーストボードを取得
- クリア
- 記入
ペーストボードにオブジェクトの配列を入力します(ここでは a
には1つの文字列のみが含まれます)。
簡単な方法:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
クロスプラットフォームの方法:
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()
これは古い記事であることは知っていますが、この問題に対する非常にエレガントな解決策を見つけました。
PyClip という名前のライブラリがあり、 https:/にあります。 /github.com/georgefs/pyclip-copycat 。
構文は非常に単純です(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()
clipboard.copy( 'foo')
を渡すと、 cmd + v でテキストを取得できます
テキストをMacのクリップボードに入れるだけの場合は、シェルのpbcopyコマンドを使用できます。