python 复制到剪贴板_Python脚本将文本复制到剪贴板

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

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

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

在Mac上我使用这个function。

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

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

使用Tkinter:

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 )

Pyperclip似乎是完成任务。

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()

还有一个更好的解决方法: https : //stackoverflow.com/a/4203897/2804197和https://stackoverflow.com/a/25476462/1338797(Tkinter )。

Tkinter很好,因为它包含在Python(Windows)中,或者易于安装(Linux),因此对最终用户的依赖性很小。

在这里我有一个“完整的”示例,它将参数或标准input复制到剪贴板,并且 – 当不在Windows上时 – 等待用户closures应用程序:

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_input和print()兼容性

在需要时“取消隐藏”Tk根窗口

以两种不同的方式等待在Linux上退出。

我试试这个剪贴板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

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

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

然后使用:

copy2clip('This is on my 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 __name__ == "__main__": main()

这是@Martin Thoma为GTK3所做的一个修改版本。 我发现原来的解决scheme导致了这个过程永无止境,当我调用脚本时,terminal被挂起。 将脚本更改为以下解决了我的问题。

#!/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包才能在没有模块导入错误的情况下工作。

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

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

我为它写了一个小包装器,放在我的ipythonconfiguration文件<3中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值