添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
活泼的伤疤  ·  不及你甜肉部分 - 百度·  3 月前    · 
有腹肌的排球  ·  几何C_百度百科·  1 年前    · 
寂寞的牛肉面  ·  宏光MINI ...·  1 年前    · 

Linux(deepin,uos)系统用Python批量把doc文件转换成docx

专栏 / Linux(deepin,uos)系统用Python批量把doc文件转换成docx

Linux(deepin,uos)系统用Python批量把doc文件转换成docx

2021年10月28日 16:58 --阅读 · --喜欢 · 鲲鹏浮游
粉丝: 5 文章: 2

最近在工作中遇到一个特殊情况,需要大量的读取Word文档(doc文档)中的信息,为了减少工作量,我决定使用Python解决。但是刚刚动手,就出现了一个问题,根据查询,能够读取doc文档的Python库我只找到了win32com,而这个库只能在Windows上执行,我使用的是Linux系统(国产deepin),无法使用。Python-docx库可以在Linux系统上运行,但是只能读取docx文档。所以我决定曲线救国。

既然doc不能读取,那就把doc转换成docx再读取就好了。然而,并没有那么顺利……Python批量转换doc还是需要win32com库……所以还得再曲线一下,我决定看看使用Linux终端能不能解决这个问题。

经过大量查询,我终于确认,使用一个叫libreoffice的软件通过终端可以把doc转换成docx,再通过Python模拟终端操作,不就能批量转换了么,说干就干。

1、安装libreoffice

使用以下命令进行安装

sudo apt install libreoffice

注:我使用的deepin系统已默认安装,不需要重复安装。

使用终端转换需要安装Java,deepin默认未安装,可以在终端执行以下命令安装

sudo apt install openjdk-8- jdk


最后,还需要一个插件将libreoffice和java结合起来

sudo apt install libreoffice- java-common


这样,准备工作就完成了。

2、测试运行

soffice --headless --invisible --convert-to docx /test/test.doc

把/test/test.doc替换成你需要测试的文件地址就行了,输出的文件会在相同的文件夹下出现,如果要指定输出位置,在后面加上“--outdir(空格)文件夹地址”就好了。如果到这一步是正常的,那就可以开始接下来的工作了。

注:如果无法正常使用,可以尝试执行以下命令重新安装libreoffice试一试。

sudo apt remove openoffice* libreoffice*

sudo apt install libreoffice*

3、使用Python批量转换

这里涉及到两个库,一个是 subprocess ,一个是os。

代码如下:

import subprocess

import os


def save_doc_to_docx(dir_path, dir_name):

# 注意:这里要用subprocess的run方法,这是Python3.4之后的用法,如果还用之前的方法会报错。

output = subprocess.run( [ "soffice" , "--headless" ,

"--invisible" , "--convert-to" , "docx" ,

f "{dir_path}+{dir_name}" , "--outdir" ,

f "{dir_path}+'docx/'" ])

return output


path = input ( " 请输入文件夹地址: " )

if path [ -1 ] != "/" :

path = path + "/"

# 有时候输入地址会漏掉最后一个/,给自己做个补救

for i in os .listdir( path ):

if i.endswith( '.doc' ) and not i.startswith( '.~' ):

# 找出doc文件并排除临时文件干扰(Linux的临时文件前是‘.~’,win的是‘~$’)

# 但如果没有开显示隐藏文件的话,转换出来的文件也应该是隐藏的吧,猜测,没试过

save_doc_to_docx( path , i)

4、总结

解决这次遇到的问题,是一个学习的过程,通过网络查询了很多知识,丰富了我的知识储备,也提升了我的 偷懒能力 工作效率 。最后,B站什么时候能提升以下专栏编辑的功能,支持下Makedown啥的,写的好累。

投诉或建议
乌克兰获得英国新型防空系统 空空导弹车载发射 满足前线迫切需求
近日,乌克兰装备了一种以AIM-132 ASRAAM(先进近程空空导弹)为中心的新型机动防空系统。它采用AIM-132这种性能强大的空战武器,并对其进行改造,使其适应地面发射。这种特别设计的武器系统是英国向乌克兰提供的又一种先进武器,它将有助于满足乌克兰前线对近程防空系统(SHORAD)的迫切需求,以应对日益增加的俄军空中威胁。本文为美国“The Drive”网站“战争地带(War Zone)”专栏文章,作者Thomas Newdick、Tyler Rogoway,本人翻译并编辑给大家分享。《泰晤士报》原