我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解如何使用Python实现复制粘贴的功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解如何使用Python实现复制粘贴的功能

楔子

pandas 里面有一个 pd.read_clipboard 函数,可以根据你复制的内容生成DataFrame。是的,就是我们平时选中,然后 Ctrl+C 时拷贝的内容。所以比较神奇,那么 pandas 到底是怎么做到的,它是怎么读出我们使用 Ctrl +C 复制的内容呢。

看了一下源码,不同的操作系统使用的复制方式不同,Windows 比较复杂,方法是使用了ctypes,然后调用了操作系统的一个动态库实现的;而 macOS 和 Linux 比较简单,调用的是内置的命令。

下面我们来看看如何在这三个系统上实现复制粘贴的功能。

Windows 上的复制粘贴

我们说 Windows 是使用 ctypes 调用动态库实现的,比较麻烦。但是我们知道 Python 有一个 pywin32 模块,对于 Windows 操作系统提供的接口进行了封装。所以在 Windows 上我们会使用 pywin32 来实现复制粘贴功能。

该模块直接通过 pip install pywin32 安装即可。

import win32clipboard as wcb
import win32con as wc

# 打开复制粘贴板
wcb.OpenClipboard()
# 我们之前可能已经 Ctrl + C 了
# 这里是清空目前 Ctrl + C 复制的内容
# 但显然没有这一步也无所谓,因为第二次复制会覆盖第一次复制的内容
wcb.EmptyClipboard()
# 将内容写入复制粘贴板,第一个参数是 win32con.CF_TEXT
# 第二个参数是我们要复制的内容,编码的时候指定为 "gbk"
wcb.SetClipboardData(wc.CF_TEXT, "古明地觉".encode("gbk"))
# 关闭复制粘贴板
wcb.CloseClipboard()

然后我们 Ctrl+V 粘贴就会得到 "古明地觉" 这个字符串,另外编码的时候要使用 gbk,因为我当前操作系统默认编码使用的是 gbk,所以会对我们输入的字节使用 gbk 解码。因此如果使用 utf-8 编码的话,那么粘贴之后得到的就会是乱码。当然具体编码根据你当前的机器决定。

复制我们实现了,下面来看看怎么实现粘贴。

import win32clipboard as wcb
import win32con as wc

wcb.OpenClipboard()
# 获取粘贴板内容,既然是获取,那么只需要一个参数即可
# 会返回已经使用 Ctrl + C 复制的内容
data = wcb.GetClipboardData(wc.CF_TEXT)
# 关闭复制粘贴板
wcb.CloseClipboard()

# 然后随便 Ctrl+C 拷贝一段内容
# 下面就会将拷贝的内容打印出来
print(data.decode("gbk"))

还是很简单的,我们上面使用的模块是 win32 系列,所以它只适用于 Windows 系统。那如果我想在 Linux 和 macOS 中实现怎么办呢?也很简单,事实上,这两个系统实现起来反而会更简单,因为自带了相关的命令。

macOS 上的复制粘贴

macOS 自带了相关命令,我们只需要通过 subprocess 模块去调用即可,举个例子:

非常简单,那么代码要如何实现呢?

import subprocess

# 实现拷贝
def copy(text):
    p = subprocess.Popen(["pbcopy", "w"],
                         stdin=subprocess.PIPE,
                         close_fds=True)
    # 将内容拷贝起来,注意 macOS 的编码默认是 utf-8
    p.communicate(input=text.encode("utf-8"))

# 实现粘贴
def paste():
    p = subprocess.Popen(["pbpaste", "r"],
                         stdout=subprocess.PIPE,
                         close_fds=True)
    stdout, stderr = p.communicate()
    # 返回粘贴内容
    return stdout.decode("utf-8")

copy("古明地觉的编程教室")
print(paste())  # 古明地觉的编程教室

以上代码在 macOS 上执行,由于自带了复制粘贴相关的命令,操作起来就比 Windows 方便多了。

Linux 上的复制粘贴

Linux 也提供了复制粘贴的命令,叫 xclip,但这个命令不是自带的,我们需要使用 yum 安装。

import subprocess

# 实现拷贝
def copy(text):
    p = subprocess.Popen(
        ["xclip", "-selection", "c"], 
        stdin=subprocess.PIPE, close_fds=True
    )
    p.communicate(input=text.encode("utf-8"))

# 实现粘贴   
def paste():
    p = subprocess.Popen(
        ["xclip", "-selection", "c", "-o"], 
        stdout=subprocess.PIPE, close_fds=True
    )
    stdout, stderr = p.communicate()
    return stdout.decode("utf-8")  

但其实在 Linux 上通过命令实现复制粘贴没什么意义,因为我们都是通过 SSH 远程连接到公司的服务器,这种情况下 xclip 是不生效的。

当然,感觉这个功能也没多大用,当做兴趣了解一下就行。

pyperclip 实现复制粘贴

最后我们再来介绍一个模块,叫 pyperclip,它对不同的操作系统的复制粘贴功能进行了封装,可以简化我们的操作。举个例子:

import pyperclip

# 复制
pyperclip.copy("哼哼")
# 粘贴
print(pyperclip.paste())  # 哼哼 

还是很方便的,以后就可以使用这个模块,自动帮我们屏蔽了操作系统间的差异。另外,这个模块只支持复制文本。

到此这篇关于详解如何使用Python实现复制粘贴的功能的文章就介绍到这了,更多相关Python复制粘贴内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解如何使用Python实现复制粘贴的功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解如何使用Python实现复制粘贴的功能

pandas 里面有一个 pd.read_clipboard 函数,可以根据你复制的内容生成DataFrame。本文就利用这个函数实现复制粘贴的功能,感兴趣的可以了解一下
2023-01-03

vue如何实现粘贴复制功能

这篇文章主要介绍了vue如何实现粘贴复制功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。引言项目中如果实现粘贴复制功能,目前市面上共有三种方法,均有利有弊,大家可以根据自己
2023-06-29

怎么用python实现复制粘贴功能

这篇文章主要介绍“怎么用python实现复制粘贴功能”,在日常操作中,相信很多人在怎么用python实现复制粘贴功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python实现复制粘贴功能”的疑惑有所
2023-06-08

Python实现强制复制粘贴的示例详解

下个文档还要马内?还好我会Python,本文就来教大家来一手如何利用Python实现强制复制粘贴。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2022-12-19

win10电脑复制粘贴功能失效如何解决

当Win10电脑的复制粘贴功能失效时,可以尝试以下几种解决方法:1. 重新启动电脑:有时候只需简单地重新启动电脑,就可以解决复制粘贴功能失效的问题。2. 检查剪贴板历史是否启用:在Windows设置中,找到“系统”>“剪贴板”选项,确保“剪
2023-09-06

如何在阿里云远程服务器中使用复制粘贴功能

在阿里云远程服务器上使用复制粘贴功能可以帮助我们更方便快捷地完成一些操作。本文将详细说明如何在阿里云远程服务器中使用复制粘贴功能。步骤一:连接远程服务器首先,我们需要连接到阿里云远程服务器。这可以通过阿里云控制台进行,也可以通过命令行工具如ssh进行。步骤二:选择需要复制粘贴的文件或文本在远程服务器上,我们需要选
如何在阿里云远程服务器中使用复制粘贴功能
2023-11-14

如何通过禁用JavaScript的方式实现复制粘贴

这篇文章给大家分享的是有关如何通过禁用JavaScript的方式实现复制粘贴的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。早上起来睁开眼,诶呀,考试周又到了。各个科目的期中作业都在各自的平台陆续发布了。各种乱七八
2023-06-14

如何使用clipboard.js库实现复制剪切功能

这篇文章主要介绍“如何使用clipboard.js库实现复制剪切功能”,在日常操作中,相信很多人在如何使用clipboard.js库实现复制剪切功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用cli
2023-07-02

如何使用MongoDB实现数据的复制和分片功能

如何使用MongoDB实现数据的复制和分片功能引言:MongoDB是一个十分流行的NoSQL数据库系统,它具有高性能、可扩展性和可靠性等特点。在大数据时代,数据量的增长是一种常态,因此数据的复制和分片成为了保证数据可靠性和性能的关键功能。本
2023-10-22

详解如何使用Object.defineProperty实现简易的vue功能

这篇文章主要为大家介绍了如何使用Object.defineProperty实现简易的vue功能示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

如何使用MySQL的复制功能实现高可用性和容错性?

如何使用MySQL的复制功能实现高可用性和容错性?随着互联网的快速发展,数据库的高可用性和容错性变得越来越重要。MySQL是一种广泛使用的开源关系型数据库,它的复制功能可以帮助我们实现数据库的高可用性和容错性。在本文中,我们将介绍如何使用M
2023-10-22

如何用Python实现机器人回复功能

本文小编为大家详细介绍“如何用Python实现机器人回复功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何用Python实现机器人回复功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.安装模块pip i
2023-06-02

如何自Android开发中使用ClipboardManager实现一个剪贴板功能

这篇文章给大家介绍如何自Android开发中使用ClipboardManager实现一个剪贴板功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在开发一些系统应用的时候,我们可以需要用到Android的剪贴板功能,比如
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录