web-dev-qa-db-ja.com

できますpython Macクリップボードにテキストを送信します

pythonプログラムで、Macクリップボードにテキストを配置したいのですが。

これは可能ですか?

30
David Sykes

新しい答え:

このページ 提案:

すべてのMac OS Xバージョンの実装

もう1つのMacモジュール(リスト4のMacSharedClipboard.py)は、pbcopy(テキストをクリップボードにコピーする)とpbpaste(クリップボードにあるテキストを貼り付ける)と呼ばれる2つのコマンドラインプログラムの上にクリップボードインターフェイスを実装します。接頭辞「pb」は、クリップボードのMac用語である「pasteboard」を表します。

古い答え:

どうやらそう:

http://code.activestate.com/recipes/410615/

それを行う方法を示す簡単なスクリプトです。

編集:これはCarbonに依存していることに気付いたので、理想的ではないかもしれません...それを何に使用しているかによって少し異なります。

7
mavnn

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の両方で動作します。

65
David Foster

次のコードは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つだけです)。

15
FabienAndre

簡単な方法:

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()
14
user805627

これが古い投稿であることは知っていますが、この問題に対する非常に洗練された解決策を見つけました。

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でテキストを取得できます

5
AtomicBen

macクリップボードにテキストを入力したいだけの場合は、シェルのpbcopyコマンドを使用できます。

1
jellyfishtree