HOWTO · Python

在 Python 中将文本复制到剪贴板

了解如何使用软件包、tkinter 或 pandas 将 Python 文本复制到系统剪贴板。

本页内容

Python 剪贴板工具将文本发送到操作系统剪贴板,以便将其粘贴到另一个应用程序中。对于纯文本,pyperclip 提供了简洁的复制 API 和可选的粘贴 API。其他选择包括用于面向字节工作流的 pyperclip3、作为替代方案的 clipboard 和 xerox、用于 GUI 程序的 tkinter,以及用于表格的 pandas。剪贴板访问取决于操作系统以及程序运行的会话。

使用 pyperclip 复制文本

使用 python -m pip install pyperclip 安装该软件包。下面的简短程序使用 Python 标准库运行,并显示在软件包和系统剪贴板可用的环境中可以传递给 pyperclip.copy() 的文本值。

text_to_copy = "Hello, Clipboard!"
print(text_to_copy)
Hello, Clipboard!

要将该值发送到剪贴板,请使用 import pyperclip,然后调用 pyperclip.copy(text_to_copy)。当你还需要读取当前剪贴板文本时,请使用 pyperclip.paste()。这些软件包调用需要当前会话中有可用的剪贴板机制;某些 Linux 设置还需要桌面会话和剪贴板实用工具。

需要字节时使用 pyperclip3

当你的代码需要来自剪贴板的字节数据时,使用 python -m pip install pyperclip3 安装。它的 copy() 和 paste() 操作处理字节。请显式转换值:在复制数字之前使用 str(number).encode("utf-8"),然后解码返回的字节,并在需要时对其进行解析。剪贴板存储的是文本或字节,而不是原始的 Python 对象类型。

使用 clipboard 软件包复制文本

使用 python -m pip install clipboard 安装 clipboard 软件包。该软件包提供 copy() 和 paste();例如,在 import clipboard as c 之后,调用 c.copy("Python Clipboard") 和 c.paste()。在两个调用中保持别名一致。这是一个面向文本的替代方案,仍然依赖宿主环境对剪贴板的支持。

使用 xerox 作为另一个剪贴板软件包

使用 python -m pip install xerox 安装,然后对文本使用 import xerox、xerox.copy("Python Xerox Example") 和 xerox.paste()。平台支持和任何系统依赖项都可能随所安装的软件包版本和操作系统而有所不同,因此如果无法访问剪贴板,请查阅其安装指南。

将 tkinter 用于 GUI 应用程序

当程序已经有 GUI 时,tkinter 可以使用窗口系统的剪贴板方法。如果缺少 tkinter,请参阅如何在 Python 中安装 tkinter。需要图形显示器。创建一个根窗口,然后调用 root.clipboard_clear()、root.clipboard_append(text_to_copy) 和 root.update() 来发送文本。update() 处理 Tk 事件;剪贴板的所有权以及程序退出后是否保留取决于窗口系统。GUI 程序可以在用户工作时保持其事件循环处于活动状态。

使用 pandas 复制 DataFrame

对于表格数据,请安装 pandas 并使用 DataFrame.to_clipboard(),例如 df.to_clipboard(index=False, header=False)。这会格式化表格,以便将其粘贴到电子表格或其他表格应用程序中;它不是复制任意 Python 对象的通用方法。这两个参数会省略行标签和列名。删除任一参数即可包含该部分。此调用同样需要当前环境支持的剪贴板机制。