用于将文本复制到剪贴板的Python脚本

时间:2012-06-16 12:32:47

标签: python clipboard pyperclip

我只需要一个将文本复制到剪贴板的python脚本。

脚本执行后,我需要将文本的输出粘贴到另一个源。 是否可以编写一个执行此工作的python脚本?

11 个答案:

答案 0 :(得分:114)

Pyperclip。示例(取自Pyperclip站点):

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

另请参阅Xerox。但它似乎有更多的依赖。

答案 1 :(得分:35)

在Mac上我使用此功能。

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

它会将“hello world”复制到剪贴板。

答案 2 :(得分:33)

使用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

答案 3 :(得分:13)

Pyperclip似乎可以胜任这项任务。

答案 4 :(得分:11)

这是使用Python 3.5.2对我有用的唯一方法,而且使用标准PyData套件最容易实现

https://stackoverflow.com/users/4502363/gadi-oron

How do I copy a string to the clipboard on Windows using Python?致谢(我完全复制了)答案
import pandas as pd
df=pd.DataFrame(['Text to copy'])
df.to_clipboard(index=False,header=False)

我为它写了一个小包装,我把它放在我的ipython个人资料< 3

答案 5 :(得分:8)

要使用本机Python目录,请使用:

import subprocess

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

然后使用:

copy2clip('This is on my clipboard!')

调用该函数。

答案 6 :(得分:3)

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 __name__ == "__main__":
    main()

答案 7 :(得分:3)

我尝试使用此剪贴板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

答案 8 :(得分:2)

另外一个改进的答案: https://stackoverflow.com/a/4203897/2804197https://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_inputprint()兼容性
  • 在需要时“取消隐藏”Tk根窗口
  • 以两种不同的方式等待Linux退出。

答案 9 :(得分:2)

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 __name__ == "__main__":
    main()

答案 10 :(得分:1)

这是@Martin Thoma对 GTK3 的回答的修改版本。我发现原始解决方案导致进程永无止境,当我调用脚本时我的终端挂起。将脚本更改为以下内容为我解决了这个问题。

#!/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 __name__ == "__main__":
    main()

您可能希望更改为其分配的clipboardText,在此脚本中将其分配给调用脚本的参数。

在一个全新的ubuntu 16.04安装中,我发现我必须安装python-gobject软件包,才能在没有模块导入错误的情况下工作。