怎么用python实现复制粘贴功能
这篇文章主要介绍“怎么用python实现复制粘贴功能”,在日常操作中,相信很多人在怎么用python实现复制粘贴功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python实现复制粘贴功能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
楔子
pandas里面有这么一个方法:pd.read_clipboard,可以根据你复制的内容生成DataFrame。是的,就是我们平时选中,然后复制、或者Ctrl+C时拷贝的内容,所以比较神奇,那么pandas到底是怎么做到的,它是怎么读出我们使用Ctrl +C复制的内容呢。
看了一下源码,非常的复杂,方法是使用了ctypes,然后调用了操作系统的一个动态库实现的。ctypes是专门来调用C、C++使用的,但是我们知道Python有一个pywin32模块,对于Windows操作系统提供的接口进行了封装。所以下面我们使用pywin32来实现我们平时使用的复制粘贴功能。
首先是安装:pip install pywin32
。
实现复制
下面我们来看看如何使用这个模块实现复制功能,另外关于pywin32这个模块,它的家族非常的庞大。
里面有很多的win32xxx.pyd,我们直接调用就行。
#win32clipboard专门用来复制粘贴的 importwin32clipboardaswcb importwin32conaswc #打开复制粘贴板 wcb.OpenClipboard() #我们之前可能已经Ctrl+C了,这里是清空目前Ctrl+C复制的内容。但是经过测试,这一步即使没有也无所谓 wcb.EmptyClipboard() #将内容写入复制粘贴板,第一个参数win32con.CF_TEXT不用管,我也不知道它是干什么的 #关键第二个参数,就是我们要复制的内容,一定要传入字节 wcb.SetClipboardData(wc.CF_TEXT,"古明地觉世界第一可爱".encode("gbk")) #关闭复制粘贴板 wcb.CloseClipboard()
然后我们 Ctrl+V 粘贴就会得到 "古明地觉世界第一可爱" 这个字符串,再强调一次,这里不能传入字符串、而是要传入字节。如果传入字符串,那么中文会得到乱码、ascii文本只会得到第一个字符。
另外这里要使用 gbk,因为我当前操作系统默认编码使用的是gbk,所以会对我们输入的字节使用 gbk 解码。因此如果使用utf-8编码的话,那么粘贴得到的依旧是乱码。当然具体根据你当前的机器决定。
实现粘贴
复制我们实现了,下面来看看怎么实现粘贴。
#win32clipboard专门用来复制粘贴的 importwin32clipboardaswcb importwin32conaswc #打开复制粘贴板 wcb.OpenClipboard() #获取粘贴板内容,既然是获取,那么只需要一个参数即可。 #会返回已经使用Ctrl+C复制得到的内容 data=wcb.GetClipboardData(wc.CF_TEXT) #关闭复制粘贴板 wcb.CloseClipboard() #得到的依旧是字节 """ 我们在"实现复制"的时候说过,因为Ctrl+V默认使用gbk解码,所以在模拟Ctrl+C的时候我们也要传入使用gbk编码的字符串 那么在"实现粘贴"的时候也是一样,我们使用Ctrl+C复制的时候,也会使用gbk编码成字节 那么这里模拟Ctrl+V得到字节之后也要使用gbk解码 """ #然后随便Ctrl+C拷贝一段内容,下面就会将拷贝的内容打印出来 print(data.decode("gbk"))
我们上面的模块是win32家族,所以它只适用于Windows系统,不适用于Linux和macOS。那么如果我想在Linux和macOS中实现怎么办呢?也很简单,事实上,这两个系统实现起来反而会更简单,因为自带了相关的命令。
macOS实现复制粘贴
importsubprocess #实现拷贝 defcopy(text): p=subprocess.Popen(["pbcopy","w"],stdin=subprocess.PIPE,close_fds=True) #将内容(text)拷贝起来 p.communicate(input=text.encode("utf-8")) #实现粘贴 defpaste(): p=subprocess.Popen(["pbpaste","r"],stdout=subprocess.PIPE,close_fds=True) stdout,stderr=p.communicate() #返回粘贴内容 returnstdout.decode("utf-8")
Linux实现复制粘贴
注意:Linux上实现复制粘贴实际上意义不大,因为实现复制粘贴的功能的一个前提是你必须要有显示器。
而公司使用的服务器肯定不会带显示器的,使用的时候都是通过xshell远程连接。但是Linux上也提供了相应的命令,叫xclip,当然这个命令不是自带的,使用的时候可能还要安装:yum install xclip。下面来看看怎么通过 Python 调用,实际上和macOS一样。
importsubprocess #实现拷贝 defcopy(text): p=subprocess.Popen( ["xclip","-selection","c"],stdin=subprocess.PIPE,close_fds=True ) p.communicate(input=text.encode("utf-8")) #实现粘贴 defpaste(): p=subprocess.Popen( ["xclip","-selection","c","-o"],stdout=subprocess.PIPE,close_fds=True ) stdout,stderr=p.communicate() returnstdout.decode("utf-8")
可以看到Linux和macOS还是比较简单的,因为操作系统提供了这个命令,我们可以直接使用。但是Windows则没有提供,所以需要使用ctypes,或者使用封装好的pywin32。
另外还是那句话,Linux上执行需要有显示器,我以我阿里云上的centos为例。
提示我们无法打开显示器,因为根本就没有。 当然,感觉这个功能也没多大用,当做兴趣了解一下就行。
到此,关于“怎么用python实现复制粘贴功能”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!
推荐阅读
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...
-
python下thread模块创建线程的方法
本篇内容介绍了“python下thread模块创建线程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来...