基于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)頁打開比較慢…):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多進(jìn)程庫multiprocessing中進(jìn)程池Pool類的使用詳解
這篇文章主要介紹了Python多進(jìn)程庫multiprocessing中進(jìn)程池Pool類的使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Python 基于wxpy庫實(shí)現(xiàn)微信添加好友功能(簡(jiǎn)潔)
這篇文章主要介紹了Python 基于wxpy庫實(shí)現(xiàn)微信添加好友功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11JSON Web Tokens的實(shí)現(xiàn)原理
本文主要介紹了JSON Web Tokens的實(shí)現(xiàn)原理。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-04-04Python restful框架接口開發(fā)實(shí)現(xiàn)
這篇文章主要介紹了Python restful框架接口開發(fā)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04django使用django-apscheduler 實(shí)現(xiàn)定時(shí)任務(wù)的例子
今天小編就為大家分享一篇django使用django-apscheduler 實(shí)現(xiàn)定時(shí)任務(wù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07python logging日志模塊以及多進(jìn)程日志詳解
本篇文章主要介紹了python logging日志模塊以及多進(jìn)程日志詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04