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