手機(jī)靚號網(wǎng)站建設(shè)外貿(mào)推廣渠道有哪些
一、引言
Python中批量進(jìn)行辦公文檔轉(zhuǎn)化是常見的操作,在windows狀態(tài)下我們可以利用changeOffice這個(gè)模塊很快進(jìn)行批量操作。
二、在Windows環(huán)境下的解決文案
Windows環(huán)境下,如何把doc轉(zhuǎn)化為docx,xls轉(zhuǎn)化為xlsx?
首先,我們要安裝這個(gè)第三方模塊,在cmd下輸入
pip install changeOffice
其次,導(dǎo)入這個(gè)模塊
from changeOffice import change
然后,要確定文件所在的位置
c = change(".") #如果是"."則表示當(dāng)前位置
最后就可以進(jìn)行展示轉(zhuǎn)化了,這里為了簡便我們把代碼寫在一起形成py文件
from changeOffice import change
path = "." #這里輸入文件所在的咱徑
c = change(path)
c. doc2docx() #把所有的doc文件轉(zhuǎn)化為docx文件
c. xls2xlsx() #把所有的doc文件轉(zhuǎn)化為docx文件
c. ppt2pptx() #把所有的doc文件轉(zhuǎn)化為docx文件
今天網(wǎng)友提問,說自己的電腦不是windows的,如何把xls轉(zhuǎn)化為xlsx, 把doc轉(zhuǎn)化為docx呢,經(jīng)過一番探索,發(fā)現(xiàn)在蘋果電腦上用changeOffice的老方法是解決不了這個(gè)新問題的。
我們當(dāng)然也可以用軟件,或者在線網(wǎng)站進(jìn)行轉(zhuǎn)化,但這樣都無法實(shí)現(xiàn)批量轉(zhuǎn)化docx和xls的功能。
三、MacOS下的解決方案
經(jīng)過一番搜索,我們在網(wǎng)上找到了樣例的代碼,然后我們利用os.walk()的方法對目錄下的所有文件進(jìn)行遍歷。最后我們把文件逐一進(jìn)行轉(zhuǎn)化。
1. MacOS下把doc批量轉(zhuǎn)化為docx文件
import os
import subprocessfor root, folders, files in os.walk("."):for file in files:if file.endswith(".doc"):file_path = os.path.abspath(os.path.join(root, file))path = os.path.dirname(file_path)subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", file_path, "--outdir", path])os.remove(file_path)
print('Success!')
2. MacOS下把xls批量轉(zhuǎn)化為xlsx文件
import os
import subprocessfor root, folders, files in os.walk("."):for file in files:if file.endswith(".xls"):file_path = os.path.abspath(os.path.join(root, file))path = os.path.dirname(file_path)subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "xlsx", file_path, "--outdir", path])os.remove(file_path)
print('Success!')
四、學(xué)后反思
- 源碼中我增加了一個(gè)os.remove(file_path),就是轉(zhuǎn)化完會(huì)把原來的源文件進(jìn)行刪除,只保留轉(zhuǎn)化后的文件。
- 進(jìn)行批量轉(zhuǎn)化前一定要進(jìn)行備份,因?yàn)檫@個(gè)過程是不可逆轉(zhuǎn)的。