Python和MS Word:将.doc转换为.docx?

12
我发现有几个问题与我的相似,但没有一个答案接近我所需的。
规格: 我正在使用Python 3,没有MS Word。我的编程机器运行OS X,云机器也是linux/ubuntu。我正在使用python-docx从每天晚上发送给我的.doc文件中提取值。然而,python-docx只能处理.docx文件,因此我需要先将文件转换为该扩展名。
所以,我有一个需要转换为.docx的.doc文件。这个脚本可能需要在云中运行,所以我不能安装任何办公室或类似软件。这可以做到吗?
5个回答

15
你正在使用Linux/Ubuntu,你可以使用LibreOffice内置的转换器。

语法

lowriter --convert-to docx *.doc

#示例 #

lowriter --convert-to docx testdoc.doc

这将把所有的doc文件转换为docx格式,并保存在同一个文件夹中。

3
你可以使用unoconv - 通用办公室转换器。它支持LibreOffice/OpenOffice支持的任何文档格式之间的转换。
unoconv -d document --format=docx *.doc

subprocess.call(['unoconv', '-d', 'document', '--format=docx', filename])

0

Aspose.Words Cloud SDK for Python 可以将 DOC 转换为 DOCX。无需依赖 MS Word,该软件包可以在任何平台上使用 Python 打开、生成、编辑、拆分、合并、比较和转换 Word 文档。

这是一个付费产品,但免费计划提供每月 150 次免费 API 调用。

P.S:我是 Aspose 的开发者大使。

# Import module
import asposewordscloud
import asposewordscloud.models.requests
from shutil import copyfile

# Get your credentials from https://dashboard.aspose.cloud (free registration is required).
words_api = asposewordscloud.WordsApi(app_sid='xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx',app_key='xxxxxxxxxxxxxxxxxxxxxxxxx')
words_api.api_client.configuration.host = 'https://api.aspose.cloud'

filename = 'C:/Temp/02_pages.doc'
dest_name = 'C:/Temp/02_pages.docx'
#Convert RTF to text
request = asposewordscloud.models.requests.ConvertDocumentRequest(document=open(filename, 'rb'), format='docx')
result = words_api.convert_document(request)
copyfile(result, dest_name)

0
import aspose.words as aw
path1="doc file path"
path2="path to save converted file"
file2=file.rsplit('.',1)[0]+'.docx'
filename1=os.path.join(path2,file2)
filename=os.path.join(path1,file)
doc = aw.Document(filename)
doc.save(filename1)

1
请记住,Stack Overflow 的目的不仅是解决眼前的问题,还要帮助将来的读者找到类似问题的解决方案,这需要理解代码的基本原理。这对于我们社区的初学者尤其重要,他们可能不熟悉语法。考虑到这一点,您能否编辑您的答案,包括解释您正在做什么,以及为什么您认为这是最好的方法? - Jeremy Caney

-3

谢谢。我忘了说明我正在使用Linux/Ubuntu。现在已经添加到帖子中了。 - zerohedge
好的。我认为这将不可能。已更新您的标签,包括Linux和Ubuntu。 - feedMe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接