nye*_*e17 18 python linux clipboard
例如,如果python脚本将吐出一个字符串,该字符串给出了我将在运行脚本后立即编辑的新编写文件的路径,那么将它直接发送到系统剪贴板而不是STDOUT.
Nul*_*ion 28
您可以使用外部程序xsel:
from subprocess import Popen, PIPE
p = Popen(['xsel','-pi'], stdin=PIPE)
p.communicate(input='Hello, World')
Run Code Online (Sandbox Code Playgroud)
使用xsel,您可以设置要处理的剪贴板.
-p适用于PRIMARY选择.这是中间点击一个.-s适用于SECONDARY选择.我不知道这是否已经被使用了.-b适用于CLIPBOARD选择.那是你的Ctrl + V.我创建一个快速而脏的函数来处理这个:
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
Run Code Online (Sandbox Code Playgroud)
你也可以试试pyGTK clipboard:
import pygtk
pygtk.require('2.0')
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text('Hello, World')
clipboard.store()
Run Code Online (Sandbox Code Playgroud)
这适用Ctrl + V于我的选择.
这不是一个Python问题,而是一个shell问题.您已经可以将Python脚本(或任何命令)的输出发送到剪贴板而不是标准输出,方法是将Python脚本的输出传递给xclip命令.
myscript.py | xclip
Run Code Online (Sandbox Code Playgroud)
如果xclip您的系统上尚未安装(默认情况下不是这样),那么您就是这样做的:
sudo apt-get install xclip
Run Code Online (Sandbox Code Playgroud)
如果您想直接从Python脚本中执行此操作,我想您可以使用os.system()简单但不推荐使用的shell来运行xclip命令.有很多方法可以做到这一点(参见subprocess当前官方方式的模块).您要执行的命令如下:
echo -n /path/goes/here | xclip
Run Code Online (Sandbox Code Playgroud)
额外奖励:在Mac OS X下,您可以通过管道输入来做同样的事情pbcopy.
正如它在另一个答案中发布的那样,如果你想在python中解决这个问题,你可以使用Pyperclip,它具有跨平台的额外好处.
>>> import pyperclip
>>> pyperclip.copy('The text to be copied to the clipboard.')
>>> pyperclip.paste()
'The text to be copied to the clipboard.'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17789 次 |
| 最近记录: |