Mac下用python操作剪下板
阿新 • • 發佈:2019-02-16
翻譯論文時發現有些論文直接複製過來會包含很多換行符,寫了個小方法處理下:去除剪下板原內容的換行符並覆蓋。
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)
注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)