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

iam*_*a11 108 python clipboard pyperclip

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

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

rob*_*ert 140

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

import pyperclip
pyperclip.copy('The text to be copied to the clipboard.')
spam = pyperclip.paste()
Run Code Online (Sandbox Code Playgroud)

另外,请参阅Xerox.但它似乎有更多的依赖.

  • 我在我的系统上尝试过,而.setcb不起作用,但.copy确实如此.我在py 2.7上使用pyperclip 1.5.4.万一有人遇到同样的问题 - 和@robert一起,我很想知道为什么这种语法在你的系统上运行但不在我的系统上. (2认同)

kyl*_*e k 39

在Mac上我使用此功能.

import os 
data = "hello world"
os.system("echo '%s' | pbcopy" % data)
Run Code Online (Sandbox Code Playgroud)

它会将"hello world"复制到剪贴板.

  • 这个例子迟早会破裂; 当使用不正确时,它可能导致巨大的安全漏洞,执行任何应该复制到剪贴板的代码......有很多更好的方法将数据传递给进程的stdin而不是调用os.system("echo .... "),像[subprocess](https://docs.python.org/3/library/subprocess.html)模块一样...... (26认同)
  • Windows 用户可以使用 clip 命令代替 pbcopy。 (11认同)
  • 对我不起作用 - 剪贴板具有相同的数据,Python 3.5.2 (3认同)
  • 我在 Linux 中使用 **xsel**。`回显'自定义字符串' | xsel --clipboard --input `. python `subprocess.Popen(['/bin/sh', '-c', f'echo "{123}" | xsel --clipboard --input'])` 的使用示例 (2认同)

use*_*197 35

使用Tkinter:

/sf/answers/294272821/

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()
Run Code Online (Sandbox Code Playgroud)

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

  • 似乎没有与python3开箱即用 (7认同)
  • @ChaseRoberts - 来吧!您只需要将导入修复为`from tkinter import Tk`。请感谢 Python 3 的作者的“清理”。 (3认同)

O.r*_*rka 15

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

请大声向/sf/users/315165441/寻求答案(我完全复制了),如何使用Python将字符串复制到Windows上的剪贴板?

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

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

  • 这对于带有新行的字符串不起作用。更好的选择是“from pandas.io.clipboard import copy;” 复制(“测试”)` (9认同)
  • 如果您深入研究这些文件 - 只需大约 5 分钟 - 您会发现 Pandas 仅在其后端使用 Pyperclip。如果您尚未使用 Pandas 来管理数据,我建议您仅使用 Pyperclip。 (2认同)
  • 感谢您的提醒。如果 pandas 使用它,那么我相信它! (2认同)

ev-*_*-br 13

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

  • 我必须使用“df.to_clipboard(index=False, header=False, excel=False)”来避免末尾有额外的换行符。 (4认同)

Bin*_*min 12

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

import subprocess

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

然后使用:

import subprocess

def copy2clip(txt):
    cmd='echo '+txt.strip()+'|pbcopy'
    return subprocess.check_call(cmd, shell=True)
Run Code Online (Sandbox Code Playgroud)

调用该函数.

  • 这是一个安全隐患,因为它容易受到 shell 注入攻击。 (7认同)
  • 看起来不错,但有一个额外的“\n”。 (3认同)
  • -1。炮轰是处理此问题的明智方法,但正如 @Hatshepsut 所说,即使有人没有积极尝试破解某些内容,示例代码也“极其”危险且不可靠。剪贴板上可能有各种各样的东西,这些东西可能会无意中运行命令或至少导致语法错误。 (3认同)
  • CalledProcessError Traceback (最近一次调用最后) &lt;module&gt;() 中的 &lt;ipython-input-91-c0c14042eb28&gt; 4 cmd='echo '+txt.strip()+'|clip' 5 return subprocess.check_call(cmd, shell= True) ----&gt; 6 copy2clip('这是在我的剪贴板上!') &lt;ipython-input-91-c0c14042eb28&gt; in copy2clip(txt) 3 def copy2clip(txt): 4 cmd='echo '+txt.strip ()+'|clip' ----&gt; 5 return subprocess.check_call(cmd, shell=True) ... CalledProcessError: Command 'echo This is on my Clipboard!|clip' 返回非零退出状态 127 (2认同)

Aks*_*hay 7

PyQt5:

from PyQt5.QtWidgets import QApplication
import sys

def main():
    app = QApplication(sys.argv)
    cb = QApplication.clipboard()
    cb.clear(mode=cb.Clipboard )
    cb.setText("Copy to ClipBoard", mode=cb.Clipboard)
    # Text is now already in the clipboard, no need for further actions.
    sys.exit()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用“QApplication.clipboard()”,则不需要导入“QClipboard”。 (2认同)

Mar*_*oma 5

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()
Run Code Online (Sandbox Code Playgroud)


小智 5

我尝试了这个剪贴板 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
Run Code Online (Sandbox Code Playgroud)

  • 不要理会这个,它只是使用“pyperclip”。用它来代替。 (33认同)
  • 很棒的代码!https://github.com/terryyin/clipboard/blob/master/clipboard.py (16认同)