pythonプログラムで、Macクリップボードにテキストを配置したいのですが。
これは可能ですか?
新しい答え:
このページ 提案:
すべてのMac OS Xバージョンの実装
もう1つのMacモジュール(リスト4のMacSharedClipboard.py)は、pbcopy(テキストをクリップボードにコピーする)とpbpaste(クリップボードにあるテキストを貼り付ける)と呼ばれる2つのコマンドラインプログラムの上にクリップボードインターフェイスを実装します。接頭辞「pb」は、クリップボードのMac用語である「pasteboard」を表します。
古い答え:
どうやらそう:
http://code.activestate.com/recipes/410615/
それを行う方法を示す簡単なスクリプトです。
編集:これはCarbonに依存していることに気付いたので、理想的ではないかもしれません...それを何に使用しているかによって少し異なります。
MacクリップボードにUnicode文字列を書き込む方法:
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)
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コマンドを使用できます。