python通过pyperclip库操作剪贴板

pyperclip介绍

pyperclip是一个python库用于操作剪贴板,可以非常方便地将文本复制到剪贴板或从剪贴板获取文本。

通过pip进行安装:pip install pyperclip

pyperclip的github地址

 pyperclip使用

复制到剪贴板

import pypercliptext = "Hello, World!"
pyperclip.copy(text)

从剪贴板读取

import pyperclipcopied_text = pyperclip.paste()
print(copied_text)

可以看出,pyperclip的核心功能是非常简单的,只需要这两个功能,就能发挥非常大的作用。

实际例子

生成当前时间复制到剪贴板

import pyperclip
import datetimecurrent_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
pyperclip.copy(current_time)

运行程序以后,通过粘贴,就可以得到当前的时间。

替换剪贴板中的内容

import pypercliptext = pyperclip.paste()
new_text = text.replace("sb", "小可爱")pyperclip.copy(new_text)
print("替换后的文本已复制到剪贴板!")

运行程序以后,剪贴板的内容就会根据需要进行替换。

当你复制“你可真是一个sb“之后,运行程序,剪贴板的内容就会变为,”你可真是一个小可爱“。

密码管理器快速复制信息

import pyperclipusername = "sagegrass"
password = "123456"# 将用户名复制到剪贴板
pyperclip.copy(username)
print("用户名已复制到剪贴板")# 将密码复制到剪贴板
pyperclip.copy(password)
print("密码已复制到剪贴板")

实际使用中,应该分别复制,然后由用户进行依次粘贴。比如说,在密码管理器的界面上,可能提供一个“复制”的按钮,当点击这个按钮,就可以将内容安全的复制到剪贴板中。在密码管理器中,这样的实现是一个好的安全的方法,来保证密码不直接出现。

注意:如果复制以后的密码长时间存储于剪贴板中,同样可能存在安全风险,因此密码管理器通常会选择在几秒钟后,清除剪贴板上复制的内容。

import pyperclip
import timepassword = "123456"pyperclip.copy(password)
print("密码已复制到剪贴板")time.sleep(10)# 一定时间以后,如果发现剪贴板的内容还是密码
# 那么就用空内容将其清除
if pyperclip.paste() == password:pyperclip.copy("")

这样,在时间范围以内,仍然可以持续复制粘贴,但是时间到了以后,就不能继续使用了。

监听剪贴板变化

剪贴板可能是一个泄露隐私的关键位置,例如,如果有程序在监听剪贴板,那么你复制粘贴的所有内容,都会被其监测到。

import pyperclip
import timelast_text = pyperclip.paste()while True:time.sleep(0.5)# 检查剪贴板内容是否有变化current_text = pyperclip.paste()# 如果剪贴板的内容不一样了,那么就是变化了if current_text != last_text:print("剪贴板内容已更新:", current_text)last_text = current_text

注意:由于可能侵犯他人隐私,因此,不要随意使用这个功能,尤其是不应该利用该功能去窃取他人剪贴板!

 从文本中提取邮箱

通过正则表达式,可以根据规则,从复制的文本中提取想要的内容。例如,根据规则,提取文本中出现的所有邮箱地址。

import pyperclip
import re# 从剪贴板获取文本
text = pyperclip.paste()# 使用正则表达式查找邮箱
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
emails = re.findall(email_pattern, text)if emails:# 将提取的邮箱复制到剪贴板pyperclip.copy(", ".join(emails))print("已提取邮箱并复制到剪贴板:", emails)
else:print("没有找到邮箱地址")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461225.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; func longestPalindromeSubseq(s string) int {n : len(s)dp : make([][]int, n)for i : range dp {dp[i] make([]int, n)}for i : n - 1; i > 0; i-- {dp[i][i] 1for j : i 1; j < n; j {if s[i] s[j] {dp[i][j] dp[i1][j-1] …

Virtuoso使用layout绘制版图、使用Calibre验证DRC和LVS

1 绘制版图 1.1 进入Layout XL 绘制好Schmatic后&#xff0c;在原理图界面点击Launch&#xff0c;点击Layout XL进入版图绘制界面。 1.2 导入元件 1、在Layout XL界面左下角找到Generate All from Source。 2、在Generate Layout界面&#xff0c;选中“Instance”&#…

摩科智能化一体化防盗门(物联网)项目

一&#xff0c;选题依据及意义 ①理论意义 目前国内外学者对智能门锁的研究取得了一些成果&#xff0c;但都局限于猫眼和门锁设计上。本课题在产品设计、服务设计等理论基础上&#xff0c;深入研究在安全与防护的背景下简约化即智能应用的门锁创新。在理论与实际探索上建立了…

记录一下方便的条件编译

1. 需要准备&#xff1a; 1-1、npm i cross-env -D 是跨平台的自定义编译 1-2、构造工具&#xff1a;vite/webpack > vite: import.meta.env.VITE_NODE_ENV > webpack:process.env.NODE_ENV这里使用vite为例子 1-3、 package.json 2. 思路与步骤 首先我们知道 axio…

企业数据泄露安全演练(分享)

该文章主要分享作者在XXX企业内部做的一次【数据泄露安全演练】&#xff0c;涉及演练背景、目的、演练流程、剧本设定、预期行为、结果等等。 以下是完整的演练方案&#xff0c;有不足的地方希望大家指出&#xff01;&#xff01; 需要原版方案电子版的可以联系作者获取。 演练…

[前端面试]计算机网络

TCP/IP 与OSI TCP/IP TCP/IP 四层模型是一个分层网络通信模型&#xff0c; 它将网络通信过程分为四个层次&#xff0c;这四层分别是&#xff1a;网络接口层、互联网层、传输层和应用层。 网络接口层负责在计算机和网络硬件之间传输数据&#xff0c;负责在物理网络上发送和接…

Conmi的正确答案——在Kibana中进入Elasticsearch的索引管理页面

Elasticsearch版本&#xff1a;7.17.25 Kibana版本&#xff1a;7.17.25 注&#xff1a;索引即类似mysql的表。 0、进入首页 1、未创建任何“索引模式”时&#xff1a; 1.1、点击左边的三横菜单&#xff1b; 1.2、点击“Discover”&#xff0c;进入“发现”页面&#xff1b; 2…

Marin说PCB之电源的Surface Current Density知多少?

小编我是一位资深的国漫迷&#xff0c;像什么仙逆&#xff0c;斗破&#xff0c;斗罗&#xff0c;完美世界&#xff0c;遮天&#xff0c;凡人修仙传&#xff0c;少年歌行等&#xff0c;为了可以看这些视频小编我不惜花费了攒了很多年的私房钱去开了这个三个平台的会员啊&#xf…

安卓开发之数据库的创建与删除

目录 前言&#xff1a;基础夯实&#xff1a;数据库的创建数据库的删除注意事项 效果展示&#xff1a;遇到问题&#xff1a;如何在虚拟机里面找到这个文件首先&#xff0c;找到虚拟机文件的位置其次&#xff0c;找到数据库文件的位置 核心代码&#xff1a; 前言&#xff1a; 安…

UV紫外相机

在产业设备领域&#xff0c;运用相机进行检测的需求很大&#xff0c;应用也很多样&#xff0c;对于图像传感器性能的期望逐年提升。在这样的背景下&#xff0c;可拍摄紫外线&#xff08;UV&#xff1a;Ultra Violet&#xff09;图像的相机拥有越来越广泛的应用场景。将UV照明和…

Python学习的自我理解和想法(22)

学的是b站的课程&#xff08;千锋教育&#xff09;&#xff0c;跟老师写程序&#xff0c;不是自创的代码&#xff01; 今天是学Python的第22天&#xff0c;学的内容是正则表达式&#xff0c;明天会出一篇详细实例介绍。电脑刚修好&#xff01;开学了&#xff0c;时间不多&…

ARM base instruction -- bfi

Bitfield Insert copies a bitfield of <width> bits from the least significant bits of the source register to bit position <lsb> of the destination register, leaving the other destination bits unchanged. 位域插入将<width>位的位域从源寄存器的…

Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control

链接&#xff1a;深度学习模型预测控制 &#xff08;如果认为有用&#xff0c;动动小手为我点亮github小星星哦&#xff09;&#xff0c;持续更新中…… 链接&#xff1a;WangXiaoMingo/TensorDL-MPC&#xff1a;DL-MPC&#xff08;深度学习模型预测控制&#xff09;是基于 P…

ubuntu交叉编译expat库给arm平台使用

1.下载expat库源码: https://github.com/libexpat/libexpat/release?page=2 wget https://github.com/libexpat/libexpat/release/download/R_2_3_0/expat-2.3.0.tar.bz2 下载成功: 2.解压expat库,并进入解压后的目录: tar xjf expat-2.3.0.tar.bz2 cd expat-2.3.0 <…

C# 编程语言学习教程

C# 编程语言学习教程 目录 C# 简介 1.1 什么是 C#1.2 C# 的特点1.3 C# 的应用领域 环境搭建 2.1 安装 Visual Studio2.2 创建第一个 C# 项目 基础语法 3.1 数据类型3.2 控制结构3.3 数组与字符串 面向对象编程 4.1 类与对象4.2 继承与多态4.3 接口与抽象类 常用库与框架 5.1 .…

文件上传知识梳理:原理、工具、绕过、利用与防御

文章简介&#xff1a; 本文全面梳理了文件上传相关知识&#xff0c;包括文件上传漏洞的原理及危害&#xff0c;介绍了 Webshell 相关工具&#xff08;如冰蝎、哥斯拉、蚁剑&#xff09;&#xff0c;详细阐述了文件上传绕过检测的多种方法&#xff08;前端检测、服务端检测的各…

学Linux的第六天

目录 账户和组管理 工作组管理 创建工作组groupadd 修改工作组groupmod 添加/删除组成员gpasswd 删除工作组groupdel 查看用户登录系统的情况 users查看当前登录系统的用户 last命令 lastlog命令 w命令 显示登录到系统的用户信息 who命令 Linux文件系统权限 文件…

KKFileView v4.4.0文件预览服务 编译和window运行和nginx代理设置

目录 一、拉取代码 二、编译打包 三、测试使用 四、实际使用 五、其他问题 本文记录&#xff0c;使用最新v4.4.0版本KKFileView源代码&#xff0c;在本地window上搭建文件预览服务&#xff0c;并通过nginx反向代理实现https访问。 一、拉取代码 从官网github上下载源代码…

树莓派基础设置--1.更新和升级操作系统

注意&#xff1a;使树莓派保持最新状态可以提高系统的安全性&#xff0c;但对于开发人员并不建议随意更新&#xff01; 一、图像化界面 一般桌面的右上角也会显示树莓派系统更新的提示&#xff0c;可以点击相应选项进行更新&#xff01; 二、使用APT 用来管理软件安装、升级…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…