Python相关工具要么无法处理.doc(只能处理.docx),要么要求必须在windows环境下使用(如win32com)。当前大家的生产环境一般都是Linux环境,更换win服务器会造成一系列的连带问题,比如其他库是否兼容等等,非常麻烦,所以找到.doc/.wps在Linux下的处理方式非常重要。还好,最后被我找到了,那就是LibreOffice。
LibreOffice 命令行基本用法:
libreoffice --headless --convert-to <目标格式> <输入文件路径>
指定输出文件名:
libreoffice --headless --convert-to pdf --outdir /path/to/output output_filename.pdf input.docx
我的doc文件位于2022年这个文件夹下
import os
import subprocess
from docx import Document
doc_files = [file for file in os.listdir('./2022年') if file.endswith('.doc')]
work_dir = os.getcwd()
target_format = "docx"
outdir_path = os.path.join(work_dir, '2022年')
for doc_file in doc_files:
doc_path = os.path.join('./2022年', doc_file)
doc_path = os.path.abspath(doc_path)
# doc = Document(doc_path)
output_name = doc_path.rsplit('.')[0]
# output_path = os.path.join(work_dir, f"{output_name}.{target_format}")
output_path = f"{output_name}.{target_format}"
command = f"libreoffice --headless --convert-to {target_format} --outdir {outdir_path} {doc_path}"
subprocess.run(command, shell=True)
# docx_file = doc_file.replace('.doc', '.docx')
# docx_path = os.path.abspath(docx_file)
# doc.save(docx_path)
print(f'{doc_file} 转化为 {output_path} 成功')
# os.system("libreoffice --headless --convert-to docx ")