基于python+pandoc实现html批量转word

 pandoc是一个强大的文档格式转换工具,支持丰富的格式转换,并尽可能的保留原来的排版,号称文档格式转换的瑞士军刀,本文将给大家介绍一下使用python搭配pandoc实现html批量转word,感兴趣的朋友可以参考阅读−

使用python搭配pandoc实现html批量转word

好兄弟工作上有一批(5000+)html的文档需要转成word格式,他采用了两种实现方式,但都有些问题:

  • 直接改后缀有些会乱码 --> 有些会乱码,原因不知

  • 一个一个复制粘贴 --> 太费时间

找到我来帮忙,研究了下发现了pandoc这个神器,记录下实现的过程和踩的坑

pandoc简介

pandoc是一个强大的文档格式转换工具,支持丰富的格式转换,并尽可能的保留原来的排版,号称文档格式转换的瑞士军刀

体支持哪些格式转换可以查看官方文档(网页打开比较慢…):Pandoc - index

需要说明的是,pandoc要下载并安装到本地才可以使用,windows下是一个msi的安装包(mac版没试),安装之后会自动添加路径到环境变量里,可以直接使用cmd执行程序

使用cmd进行文档格式转换

一开始我是直接使用cmd指令进行格式转换,使用到的指令如下:

pandoc abc.html -o abc.docx

本地测试了一下可以正常转换,然后我就想写一个bat脚本批量执行,但是发现cmd指令读不出来中文文件名,即使改了cmd的编码为UTF-8也不行,查了好多资料都没找到解决方法,只好作罢,如果有大佬知道怎么读取中文文件名的还请不吝赐教

使用python搭配pandoc

没法使用bat脚本进行转换,又查了些资料,改为使用python中的os.system来代替执行cmd指令,具体代码如下:

注意:前提是必须要安装pandoc到系统

 
  1. import os

  2. def transfer_file(file_dir):

  3. count = 1

  4. for root, dirs, files in os.walk(file_dir): # 获取当前文件夹的信息

  5. for file in files: # 扫描所有文件

  6. if os.path.splitext(file)[1] == ".html": # 提取出所有后缀名为.html的文件

  7. os.chdir(root) # os.chdir() 方法用于改变当前工作目录到指定的路径。

  8. print("正在转换第:" + str(count) + "个文件")

  9. count = count + 1

  10. print("转换开始:" + "pandoc " + file + " -o " + os.path.splitext(file)[0] + ".docx")

  11. # 使用os.system调用pandoc进行格式转化

  12. os.system("pandoc " + file + " -o " + os.path.splitext(file)[0] + ".docx")

  13. print("转换完成...")

  14. if __name__ == "__main__":

  15. # os.path.realpath(__file__))是当前python文件所在的文件夹路径,如果想要转换指定文件夹,可以修改此路径

  16. transfer_file(os.path.dirname(os.path.realpath(__file__)))

可以实现批量转化

关于pypandoc

pandoc有一个python的包叫pypandoc,引入这个包直接调用pandoc.convert_file方法也可以实现文档格式转换,但是我没有试过这种方式需不需要安装pandoc,后面再摸索下

总结

pandoc是真的很强大,完美解决了乱码问题和排版问题,另外原html中的图片只要是在线图片也可以转到docx文档中,以后再研究一下其他打开方式,听说可以很方便的制作电子书,期待~

到此这篇关于基于python+pandoc实现html批量转word的文章就介绍到这了。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值