Mac下用python操作剪切板

来源:互联网 发布:windows10 mac地址 编辑:程序博客网 时间:2024/06/05 05:38

翻译论文时发现有些论文直接复制过来会包含很多换行符,写了个小方法处理下:去除剪切板原内容的换行符并覆盖。

import osimport subprocess#将当前剪切板的内容输出到m.txt文件里并用Python读取os.system("pbpaste > m.txt")f = open('m.txt','r')txt=f.read()#去除换行符和回车符txt=txt.strip().replace('\r\n',' ').replace('\r',' ').replace('\n',' ')f.close()print(txt)#将新内容拷贝至Mac系统的剪切板p1=subprocess.Popen(["echo", txt], stdout=subprocess.PIPE)subprocess.Popen(["pbcopy"], stdin=p1.stdout)

注1:与上一篇在Windows下用Python操作剪切板不同,这个可以处理中文不会乱码
注2:这个方法会额外创建一个m.txt,请根据自己的需要换成其他名字防止覆盖重要文件。用这个方法是因为它简单,代码行数少,无需安装第三方包,且本人暂时想不出其他优雅的方法,希望有人能指正。

更新:

此方法无需额外创建文本

import subprocessdef getClipboardData():    p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)    retcode = p.wait()    data = p.stdout.read()    #这里的data为bytes类型,之后需要转成utf-8操作    return datadef setClipboardData(data):    p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)    p.stdin.write(data)    p.stdin.close()    p.communicate()txt=str(getClipboardData(),'utf-8')txt=txt.strip().replace('\r\n',' ').replace('\r',' ').replace('\n',' ')print(txt)#重新转成bytes型data=bytes(txt,'utf8')setClipboardData(data)
原创粉丝点击