doc文件转docx文件
Windows系统
众所周知,python的word文件解析包python-docx是无法直接解析doc文件的,但是在windows系统下有一个包pypiwin32,利用这个包可以将doc文件转换为docx文件,但是使用起来有两个局限:
- Linux系统中没有这个包;
- 这个包必须通过显示的文件保存操作来进行转换(没有办法仅通过文件二进制流操作)。
这两个包的安装:1
2pip install python-docx
pip install pypiwin32
所以可以使用这个包结合flask将转换程序作为一个服务部署在windows服务器上,后续可以方便的使用。
1 | # coding=utf-8 |
将上面的代码保存为py文件,之后修改后缀名为pyw,直接双击点击即可后台启动该程序。
Linux系统
因为windows作为服务器不如Linux稳定,而且很多企业大多都是Linux服务器,所以将doc转docx的服务部署在Linux服务器上也是一个常见的需求,经过搜索发现Linux系统中有个”libreoffice”软件包,可以支持文件格式的转换,其中就支持将doc文件转换为docx文件。
安装:
1 | sudo apt-get install libreoffice |
转换命令:
1 | libreoffice --headless --convert-to docx --outdir /path/to/output/directory /path/to/input/document.doc |
这里的参数解释如下:
--headless
:表示LibreOffice在没有图形界面的情况下运行。--convert-to docx
:指定转换的格式为.docx
。:writer_pdf_Export
:这是LibreOffice的内部选项,用于指定输出格式。--outdir /path/to/output/directory
:指定输出文件的目录。/path/to/input/document.doc
:指定要转换的.doc
文件的路径。
请确保替换/path/to/output/directory
和/path/to/input/document.doc
为你实际的文件路径。
所以基于此,将命令的执行通过python脚本来实现,并作为服务接收待转换的doc文件二进制流,将转换得到的docx文件的二进制流返回,在python代码中实现一系列的文件操作、转换命令、命令执行出错的异常捕获以及对异常进程的主动kill(避免积累的进程太多造成服务器宕机)。
1 | import os |