web-dev-qa-db-ja.com

Pythonスクリプトを使用してテキストをクリップボードにコピーします

テキストをクリップボードにコピーするpythonスクリプトが必要です。

スクリプトが実行された後、テキストの出力を別のソースに貼り付ける必要があります。この仕事をするpythonスクリプトを書くことは可能ですか?

92
iamsiva11

Pyperclip を参照してください。例(Pyperclipサイトから取得):

import pyperclip
pyperclip.copy('The text to be copied to the clipboard.')
spam = pyperclip.paste()

また、 Xerox を参照してください。しかし、より多くの依存関係があるようです。

125
robert

Macでは、この機能を使用します。

import os 
data = "hello world"
os.system("echo '%s' | pbcopy" % data)

「hello world」をクリップボードにコピーします。

36
kyle k

Tkinterを使用します。

https://stackoverflow.com/a/4203897/2804197

try:
    from Tkinter import Tk
except ImportError:
    from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.update() # now it stays on the clipboard after the window is closed
r.destroy()

(原作者: https://stackoverflow.com/users/449571/atomizer

34
user2804197

これはPython 3.5.2を使用して私にとって機能した唯一の方法であり、標準のPyDataスイートを使用して実装するのが最も簡単です。

https://stackoverflow.com/users/4502363/gadi-oron に叫ぶ((完全にコピーした)から) How do I Pythonを使用してWindowsで文字列をクリップボードにコピーしますか?

import pandas as pd
df=pd.DataFrame(['Text to copy'])
df.to_clipboard(index=False,header=False)

ipythonプロファイル<3に入れる小さなラッパーを書きました

14
O.rka

Pyperclip はタスク次第のようです。

13
ev-br

ネイティブPythonディレクトリを使用するには、次を使用します。

import subprocess

def copy2clip(txt):
    cmd='echo '+txt.strip()+'|clip'
    return subprocess.check_call(cmd, Shell=True)

次に使用します:

copy2clip('This is on my clipboard!')

関数を呼び出します。

9
Binyamin

GTK3:

#!/usr/bin/python3

from gi.repository import Gtk, Gdk


class Hello(Gtk.Window):

    def __init__(self):
        super(Hello, self).__init__()
        clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
        clipboard.set_text("hello world", -1)
        Gtk.main_quit()


def main():
    Hello()
    Gtk.main()

if __== "__main__":
    main()
4
Martin Thoma

改善すべきもう1つの答え: https://stackoverflow.com/a/4203897/2804197 および https://stackoverflow.com/a/25476462/1338797 (Tkinter )。

TkinterはPython(Windows)に含まれているか、インストールが簡単(Linux)であるため、エンドユーザーにほとんど依存関係を必要としないため、素晴らしいです。

ここに、引数または標準入力をクリップボードにコピーする「本格的な」例があります。Windows以外の場合は、ユーザーがアプリケーションを閉じるのを待ちます。

import sys

try:
    from Tkinter import Tk
except ImportError:
    # welcome to Python3
    from tkinter import Tk
    raw_input = input

r = Tk()
r.withdraw()
r.clipboard_clear()

if len(sys.argv) < 2:
    data = sys.stdin.read()
else:
    data = ' '.join(sys.argv[1:])

r.clipboard_append(data)

if sys.platform != 'win32':
    if len(sys.argv) > 1:
        raw_input('Data was copied into clipboard. Paste and press ENTER to exit...')
    else:
        # stdin already read; use GUI to exit
        print('Data was copied into clipboard. Paste, then close popup to exit...')
        r.deiconify()
        r.mainloop()
else:
    r.destroy()

このショーケース:

  • py2とPy3にTkをインポートする
  • raw_inputおよびprint()の互換性
  • 必要なときにTkルートウィンドウを「隠す」
  • linuxでの終了を2つの異なる方法で待っています。
2
Tomasz Gandor

このクリップボード0.0.4を試してみると、うまく機能します。

https://pypi.python.org/pypi/clipboard/0.0.4

import clipboard
clipboard.copy("abc")  # now the clipboard content will be string "abc"
text = clipboard.paste()  # text will have the content of clipboard
2
Du Peng

PyQt5:

from PyQt5.QtWidgets import QApplication
from PyQt5 import QtGui
from PyQt5.QtGui import QClipboard
import sys


def main():


    app=QApplication(sys.argv)
    cb = QApplication.clipboard()
    cb.clear(mode=cb.Clipboard )
    cb.setText("Copy to ClipBoard", mode=cb.Clipboard)
    sys.exit(app.exec_())

if __== "__main__":
    main()
2
Akshay

これは、@-Martin ThomaのGTKに対する回答の変更版です。元のソリューションではプロセスが終了せず、スクリプトを呼び出したときに端末がハングすることがわかりました。スクリプトを次のように変更すると、問題が解決しました。

#!/usr/bin/python3

from gi.repository import Gtk, Gdk
import sys
from time import sleep

class Hello(Gtk.Window):

    def __init__(self):
        super(Hello, self).__init__()

        clipboardText = sys.argv[1]
        clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
        clipboard.set_text(clipboardText, -1)
        clipboard.store()


def main():
    Hello()



if __== "__main__":
    main()

おそらく、clipboardTextの割り当て先を変更する必要があります。このスクリプトでは、スクリプトが呼び出されるパラメーターに割り当てられます。

buntu 16.04の新規インストールでは、モジュールインポートエラーなしで動作するためにpython-gobjectパッケージをインストールする必要があることがわかりました。

1
Programster