基于python+pandoc實(shí)現(xiàn)html批量轉(zhuǎn)word
使用python搭配pandoc實(shí)現(xiàn)html批量轉(zhuǎn)word
好兄弟工作上有一批(5000+)html的文檔需要轉(zhuǎn)成word格式,他采用了兩種實(shí)現(xiàn)方式,但都有些問題:
- 直接改后綴有些會(huì)亂碼 --> 有些會(huì)亂碼,原因不知
- 一個(gè)一個(gè)復(fù)制粘貼 --> 太費(fèi)時(shí)間
找到我來幫忙,研究了下發(fā)現(xiàn)了pandoc這個(gè)神器,記錄下實(shí)現(xiàn)的過程和踩的坑
pandoc簡(jiǎn)介
pandoc是一個(gè)強(qiáng)大的文檔格式轉(zhuǎn)換工具,支持豐富的格式轉(zhuǎn)換,并盡可能的保留原來的排版,號(hào)稱文檔格式轉(zhuǎn)換的瑞士軍刀
體支持哪些格式轉(zhuǎn)換可以查看官方文檔(網(wǎng)頁(yè)打開比較慢…):Pandoc - index
需要說明的是,pandoc要下載并安裝到本地才可以使用,windows下是一個(gè)msi的安裝包(mac版沒試),安裝之后會(huì)自動(dòng)添加路徑到環(huán)境變量里,可以直接使用cmd執(zhí)行程序
使用cmd進(jìn)行文檔格式轉(zhuǎn)換
一開始我是直接使用cmd指令進(jìn)行格式轉(zhuǎn)換,使用到的指令如下:
pandoc abc.html -o abc.docx
本地測(cè)試了一下可以正常轉(zhuǎn)換,然后我就想寫一個(gè)bat腳本批量執(zhí)行,但是發(fā)現(xiàn)cmd指令讀不出來中文文件名,即使改了cmd的編碼為UTF-8也不行,查了好多資料都沒找到解決方法,只好作罷,如果有大佬知道怎么讀取中文文件名的還請(qǐng)不吝賜教
使用python搭配pandoc
沒法使用bat腳本進(jìn)行轉(zhuǎn)換,又查了些資料,改為使用python中的os.system來代替執(zhí)行cmd指令,具體代碼如下:
注意:前提是必須要安裝pandoc到系統(tǒng)
import os
def transfer_file(file_dir):
count = 1
for root, dirs, files in os.walk(file_dir): # 獲取當(dāng)前文件夾的信息
for file in files: # 掃描所有文件
if os.path.splitext(file)[1] == ".html": # 提取出所有后綴名為.html的文件
os.chdir(root) # os.chdir() 方法用于改變當(dāng)前工作目錄到指定的路徑。
print("正在轉(zhuǎn)換第:" + str(count) + "個(gè)文件")
count = count + 1
print("轉(zhuǎn)換開始:" + "pandoc " + file + " -o " + os.path.splitext(file)[0] + ".docx")
# 使用os.system調(diào)用pandoc進(jìn)行格式轉(zhuǎn)化
os.system("pandoc " + file + " -o " + os.path.splitext(file)[0] + ".docx")
print("轉(zhuǎn)換完成...")
if __name__ == "__main__":
# os.path.realpath(__file__))是當(dāng)前python文件所在的文件夾路徑,如果想要轉(zhuǎn)換指定文件夾,可以修改此路徑
transfer_file(os.path.dirname(os.path.realpath(__file__)))可以實(shí)現(xiàn)批量轉(zhuǎn)化
關(guān)于pypandoc
pandoc有一個(gè)python的包叫pypandoc,引入這個(gè)包直接調(diào)用pandoc.convert_file方法也可以實(shí)現(xiàn)文檔格式轉(zhuǎn)換,但是我沒有試過這種方式需不需要安裝pandoc,后面再摸索下
總結(jié)
pandoc是真的很強(qiáng)大,完美解決了亂碼問題和排版問題,另外原h(huán)tml中的圖片只要是在線圖片也可以轉(zhuǎn)到docx文檔中,以后再研究一下其他打開方式,聽說可以很方便的制作電子書,期待~
到此這篇關(guān)于基于python+pandoc實(shí)現(xiàn)html批量轉(zhuǎn)word的文章就介紹到這了,更多相關(guān)python實(shí)現(xiàn)html批量轉(zhuǎn)word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用python 更新ssh 遠(yuǎn)程代碼 操作遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)代碼
這篇文章主要介紹了利用python 更新ssh 遠(yuǎn)程代碼 操作遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-02-02
python yolo混合文件xml和img整理/回顯yolo標(biāo)注文件方式
本文介紹了如何根據(jù)XML文件中的標(biāo)簽順序進(jìn)行索引轉(zhuǎn)換,并提供了一種自定義標(biāo)簽轉(zhuǎn)格式的方法,以回顯YOLO標(biāo)注文件2026-01-01
Python 刪除整個(gè)文本中的空格,并實(shí)現(xiàn)按行顯示
今天小編就為大家分享一篇Python 刪除整個(gè)文本中的空格,并實(shí)現(xiàn)按行顯示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python對(duì)圖片進(jìn)行二值化的實(shí)現(xiàn)方法
圖像的二值化處理是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的只有黑和白的視覺效果,二值化是圖像分割的一種最簡(jiǎn)單的方法,可以把灰度圖像轉(zhuǎn)換成二值圖像,本文給大家介紹了Python對(duì)圖片進(jìn)行二值化的實(shí)現(xiàn)方法,需要的朋友可以參考下2025-10-10

