たとえば、pythonスクリプトが、スクリプトの実行直後に編集する、新しく書き込まれたファイルのパスを示す文字列を吐き出す場合、それがあれば非常に便利です。 STDOUT
ではなく、システムクリップボードに直接送信されます。
外部プログラムを使用できます xsel
:
from subprocess import Popen, PIPE
p = Popen(['xsel','-pi'], stdin=PIPE)
p.communicate(input='Hello, World')
xsel
を使用すると、作業するクリップボードを設定できます。
-p
はPRIMARY
選択で機能します。それはミドルクリックです。-s
はSECONDARY
選択で機能します。これがもう使われているかどうかはわかりません。-b
はCLIPBOARD
選択で機能します。それはあなたのCtrl + V
のものです。Xのクリップボードについてもっと読む ここ および ここ 。
これを処理するために私が作成した迅速で汚い関数:
def paste(str, p=True, c=True):
from subprocess import Popen, PIPE
if p:
p = Popen(['xsel', '-pi'], stdin=PIPE)
p.communicate(input=str)
if c:
p = Popen(['xsel', '-bi'], stdin=PIPE)
p.communicate(input=str)
paste('Hello', False) # pastes to CLIPBOARD only
paste('Hello', c=False) # pastes to PRIMARY only
paste('Hello') # pastes to both
PyGTKを試すこともできます clipboard
:
import pygtk
pygtk.require('2.0')
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text('Hello, World')
clipboard.store()
これは、私にとってはCtrl + V
選択で機能します。
これは実際にはPythonの質問ではなく、シェルの質問です。Pythonスクリプト(または任意のコマンド)の出力を、代わりにクリップボードに送信できます。 Pythonスクリプトの出力をxclip
コマンドにパイプすることによって標準出力。
_myscript.py | xclip
_
xclip
がまだシステムにインストールされていない場合(デフォルトではインストールされていません)、次のようにして取得します。
_Sudo apt-get install xclip
_
Pythonスクリプトから直接実行したい場合は、os.system()
を使用してxclipコマンドをシェルアウトして実行できると思います。これは単純ですが、非推奨です。これを行う方法(現在の公式の方法については、subprocess
モジュールを参照してください)。実行するコマンドは次のようなものです。
_echo -n /path/goes/here | xclip
_
ボーナス:Mac OS Xでは、pbcopy
にパイプすることで同じことができます。
他の人が指摘しているように、これはGUI操作を伴うため、「Pythonとバッテリー」ではありません。したがって、プラットフォームに依存します。 Windowsを使用している場合は、win32 PythonモジュールおよびAccesswin32クリップボード操作を使用できます。ただし、1つのGUIツールキット(QTの場合はPyQT/PySide、GTK +の場合はPyGTK、wxWidgetsの場合はwxPython)を選択することをお勧めします。 )次にクリップボード操作を使用します。ツールキットのような重いものが必要ない場合は、Windowsや他のプラットフォームで利用可能なものでwin32パッケージを使用するラッパーを作成し、それに応じて切り替えます。
WxPythonの場合、ここにいくつかの役立つリンクがあります。
http://www.wxpython.org/docs/api/wx.Clipboard-class.html
http://wiki.wxpython.org/ClipBoard
http://www.python-forum.org/pythonforum/viewtopic.php?f=1&t=25549