テキストをクリップボードにコピーするpythonスクリプトが必要です。
スクリプトが実行された後、テキストの出力を別のソースに貼り付ける必要があります。この仕事をするpythonスクリプトを書くことは可能ですか?
Macでは、この機能を使用します。
import os
data = "hello world"
os.system("echo '%s' | pbcopy" % data)
「hello world」をクリップボードにコピーします。
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()
これは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に入れる小さなラッパーを書きました
Pyperclip はタスク次第のようです。
ネイティブPythonディレクトリを使用するには、次を使用します。
import subprocess
def copy2clip(txt):
cmd='echo '+txt.strip()+'|clip'
return subprocess.check_call(cmd, Shell=True)
次に使用します:
copy2clip('This is on my clipboard!')
関数を呼び出します。
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()
改善すべきもう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()
このショーケース:
raw_input
およびprint()
の互換性このクリップボード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
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()
これは、@-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
パッケージをインストールする必要があることがわかりました。