python在windows与linux下读取doc文件

前言
记录一下自己走的弯路,能帮助大家少走一点弯路。读取doc文件流程,基本上都是将doc文件转为docx文件或者pdf文件进行读取。下面主要介绍将doc文件转化为docx文件进行读取

一、python在windows读取doc文件
这个网上很多,主要通过win32com库,将doc文件转为docx,本文主要是提取word文件里面的图片,提取内容也大同小异。下面上代码。

import os
import shutil
import zipfile
from win32com import client
# doc转docx
def doc2docx(doc_name, docx_name):try:# 首先将doc转换成docxword = client.Dispatch("Word.Application")doc = word.Documents.Open(doc_name)# 使用参数16表示将doc转换成docxdoc.SaveAs(docx_name, 16)doc.Close()word.Quit()except:pass''':param path:源文件:param zip_path:docx重命名为zip:param tmp_path:中转图片文件夹:param store_path:最后保存结果的文件夹(需要手动创建):return:'''
def word2pic(path, tmp_path, store_path):# 将docx文件重命名为zip文件#os.rename(path, zip_path)# 进行解压f = zipfile.ZipFile(path, 'r')# 将图片提取并保存for file in f.namelist():f.extract(file, tmp_path)# 释放该zip文件f.close()# 将docx文件从zip还原为docx#os.rename(zip_path, path)# 得到缓存文件夹中图片列表pic = os.listdir(os.path.join(tmp_path, 'word/media'))# 将图片复制到最终的文件夹中for i in pic:# 根据word的路径生成图片的名称shutil.copy(os.path.join(tmp_path + '/word/media', i), os.path.join(store_path, i))# 删除缓冲文件夹中的文件,用以存储下一次的文件for i in os.listdir(tmp_path):# 如果是文件夹则删除if os.path.isdir(os.path.join(tmp_path, i)):shutil.rmtree(os.path.join(tmp_path, i))

二、Linux下读取doc文件,通过libreoffice将doc文件转为docx文件,安装libreoffice,可以参考一下这个篇[安装libreoffice]

import os
import shutil
import zipfile
import subprocess# doc转docx
def doc2docx(docPath, docxPath):cmd = '/bin/libreoffice6.1 --headless --convert-to docx'.split() + [docPath] + ['--outdir'] + [docxPath]p = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)p.wait(timeout=30)stdout, stderr = p.communicate()if stderr:raise subprocess.SubprocessError(stderr)''':param path:源文件:param zip_path:docx重命名为zip:param tmp_path:中转图片文件夹:param store_path:最后保存结果的文件夹(需要手动创建):return:'''
def word2pic(down_file,pic_path,file_to_pic):tmp_path = '{}{}'.format(pic_path, '/temp')# 将docx文件重命名为zip文件#os.rename(path, zip_path)# 进行解压f = zipfile.ZipFile(down_file, 'r')# 将图片提取并保存for file in f.namelist():f.extract(file, tmp_path)# 释放该zip文件f.close()if os.path.isdir(os.path.join(tmp_path, 'word/media')):# 得到缓存文件夹中图片列表pic = os.listdir(os.path.join(tmp_path, 'word/media'))# 将图片复制到最终的文件夹中for i in pic:# 根据word的路径生成图片的名称shutil.copy(os.path.join(tmp_path + '/word/media', i), os.path.join(file_to_pic, i))# 删除缓冲文件夹中的文件,用以存储下一次的文件for i in os.listdir(tmp_path):# 如果是文件夹则删除if os.path.isdir(os.path.join(tmp_path, i)):shutil.rmtree(os.path.join(tmp_path, i))

python在windows与linux下读取doc文件相关推荐

  1. 用Python在Windows或Linux下批量删除文件夹中指定的文件

    情况说明:当在一个文件夹下面有好几十个或几百个文件需要删除,此时一一去挑选费时费力,特别是在Linux下面.因此,需要批量删除文件. 对训练样本(图像)和测试样本(图像)进行评估时候,需要查看是数据本 ...

  2. windows和linux下读取文件乱码的终极解决办法!

    乱码是个很恶心的问题. windows和linux读取txt文件,一旦读取了,编码发生改变,就无法再还原了,只有重启项目. 网上有很多方法都是读取文件头,方法很好,但是亲测都不能用(右移8位判断0xf ...

  3. Linux下读取doc,docx文件

    如果是Linux Desktop发行版本,可以下载wps for linux docx文件 利用python-docx包 test.py # -*- coding:utf-8 -*- import s ...

  4. linux 下 读取某个文件的某一行或者某几行

    wc -l  a.txt  统计a.txt 行数 查看文件a.txt的第190行到196行, sed -n '190,196p' a.txt 如果查看某一行用 sed -n '190,1p' a.tx ...

  5. linux下读取excel文件

    一.example.cpp #include <iostream> #include <stdio.h> #include <string.h> #include ...

  6. python在windows和linux_python在windows和linux下获得本机本地ip地址方法小结

    本文实例总结了python在windows和linux下获得本机本地ip地址方法.分享给大家供大家参考.具体分析如下: python的socket包含了丰富的函数和方法可以获得本机的ip地址信息,so ...

  7. python linux编程与window编程_Python实现Windows和Linux之间互相传输文件(文件夹)的方法...

    项目中需要从Windows系统传输ISO文件到Linux测试系统,然后再Linux测试系统里安装这个ISO文件.所以就需要实现如何把文件从Windows系统传输到Linux系统中. 在项目中使用了ps ...

  8. python传文件_Python实现Windows和Linux之间互相传输文件(文件夹)的方法

    项目中需要从Windows系统传输ISO文件到Linux测试系统,然后再Linux测试系统里安装这个ISO文件.所以就需要实现如何把文件从Windows系统传输到Linux系统中. 在项目中使用了ps ...

  9. linux用户间文件互传,windows和linux间互传文件

    方法1:Xshell传输文件 用rz,sz命令在xshell传输文件 很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz 首先你的Ubuntu需要安 ...

  10. Windows如何读取Linux,Linux下读取Windows注册表

    原本以为Linux下读取Windows的注册表是个异想天开.无法实现的想法,忽然发现了老外写的一段小文章 http://www.linuxidc.com/Linux/2011-04/34100p2.h ...

最新文章

  1. 某程序员哀叹:连续帮三任女朋友进360,京东等互联网大厂,进去后却都惨遭分手!...
  2. Java Web整合开发(10) -- 资源国际化
  3. Java数据结构和算法( 二 ) ## 数组
  4. pytorch model.eval()的作用
  5. GDI+ 设置文本对齐方式
  6. 为什么设计师应该学习编写代码
  7. 在SQL Server数据库之间进行数据导入导出
  8. 简单Android app开发_如何简单快速开发外卖app?
  9. Amber Group受邀成为DeFi Alliance成员单位,持续助力DeFi生态发展
  10. Apollo应用接入
  11. App Store中国区下架近5万款未提供版号的游戏;微软源代码遭黑客访问;Rust 1.49.0发布
  12. 程序结构程序设计(四)
  13. Java基础之泛型的使用
  14. java只对_只对你情有独钟:写给Java的情诗
  15. 主成分分析法(PCA方法)计算OBB包围盒
  16. 翻译--CenterNet-将目标看作点
  17. 广东外语外贸大学教务系统一键查分
  18. 第一次进入Eclipse MARS2界面后的一些基本设置
  19. android技术帖,android好帖子
  20. linux修改时间写入cmos,解析Linux操作系统修改时间

热门文章

  1. 全球及中国中线静脉插管行业研究及十四五规划分析报告
  2. 文件夹重命名失败,删除失败,提示‘文件正在被使用‘
  3. 解决chrome/IE浏览器被桔梗导航劫持的问题
  4. python编程题:天天向上的力量
  5. 模拟文曲星上的猜数游戏c语言,文曲星上的“猜数字”游戏Python版
  6. 驾校学员信息管理系统
  7. java 什么时候用 protected_protected如何在java里使用?
  8. 百度地图 AK 申请 / 签名获取及使用方式
  9. Catboost参数全集
  10. MySQL数据库高级SQL语句【进阶查询、null值、数据库正则、数据库运算符、连接查询(内连接、左外连接、右外连接)】