Mac下用python操作剪切板

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

import os
import 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 subprocess

def getClipboardData():
    p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)
    retcode = p.wait()
    data = p.stdout.read()
    #这里的data为bytes类型,之后需要转成utf-8操作
    return data
def 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)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值