1. 程式人生 > >Mac下用python操作剪下板

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)


注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)