• python读取word中的段落、表、图+++++++++++Doc转换Docx


    读取文本、图、表、解压信息

    import
    docx import zipfile import os import shutil '''读取word中的文本''' def gettxt(): file=docx.Document("gao.docx") print("段落数:"+str(len(file.paragraphs)))#段落数为13,每个回车隔离一段 #输出每一段的内容 # for para in file.paragraphs: # print(para.text) #输出段落编号及段落内容 for i in range(len(file.paragraphs)): if len(file.paragraphs[i].text.replace(' ',''))>4: print(""+str(i)+"段的内容是:"+file.paragraphs[i].text) '''读取word中的table''' def gettable(): doc = docx.Document('word.docx') for table in doc.tables: # 遍历所有表格 print ('----table------') for row in table.rows: # 遍历表格的所有行 # row_str = ' '.join([cell.text for cell in row.cells]) # 一行数据 # print row_str for cell in row.cells: print (cell.text, ' ') '''获取解压后的文件信息''' def getinfo(wordfile): f=zipfile.ZipFile(wordfile,'r') for filename in f.namelist(): f.extract(filename) print(filename) ''' 输出解压后的信息: _rels/ _rels/.rels customXml/ customXml/_rels/ customXml/_rels/item1.xml.rels customXml/_rels/item2.xml.rels customXml/item1.xml customXml/item2.xml customXml/itemProps1.xml customXml/itemProps2.xml docProps/ docProps/app.xml docProps/core.xml docProps/custom.xml docProps/thumbnail.wmf word/ word/_rels/ word/_rels/document.xml.rels word/document.xml word/fontTable.xml word/media/ word/media/image1.jpeg word/numbering.xml word/settings.xml word/styles.xml word/theme/ word/theme/theme1.xml ''' ''' ------获取图: word文档的路径 zip压缩文件的路径 临时解压的tmp路径 最后需要保存的store_path路径 ''' def getpic(path, zip_path, tmp_path, store_path): ''' :param path:源文件 :param zip_path:docx重命名为zip :param tmp_path:中转图片文件夹 :param store_path:最后保存结果的文件夹(需要手动创建) :return: ''' '''=============将docx文件重命名为zip文件====================''' os.rename(path, zip_path) # 进行解压 f = zipfile.ZipFile(zip_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的路径生成图片的名称 new_name = path.replace('\', '_') new_name = new_name.replace(':', '') + '_' + i shutil.copy(os.path.join(tmp_path + '/word/media', i), os.path.join(store_path, new_name)) '''=============删除缓冲文件夹中的文件,用以存储下一次的文件====================''' 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)) if __name__ == '__main__': # 源文件 path = r'E:dogcat提取图片log.docx' # docx重命名为zip zip_path = r'E:dogcat提取图片log.zip' # 中转图片文件夹 tmp_path = r'E:dogcat提取图片 mp' # 最后保存结果的文件夹 store_path = r'E:dogcat提取图片测试' m = getpic(path, zip_path, tmp_path, store_path)

    至于处理doc文件直接转存成docx文件就可以了

    def docTTTTTdocx(doc_name, docx_name):    
      try: # 首先将doc转换成docx word = client.Dispatch("Word.Application") doc = word.Documents.Open(doc_name) # 使用参数16表示将doc转换成docx doc.SaveAs(docx_name, 16) doc.Close() word.Quit() except: pass


    这里如果转换不成功,可能是路径的问题,把doc_name换成完整路径,如下:
    from win32com.client import Dispatch
    def docToDocxR(docPath, docxPath):
    '''将doc转存为docx'''
    word = Dispatch('Word.Application')
    pathPrefix = sys.path[0]+'\'
    print(pathPrefix)
    doc = word.Documents.Open(pathPrefix+docPath)
    doc.SaveAs(pathPrefix+docxPath, FileFormat=12)
    doc.Close()
    word.Quit()
     

    参考:

    https://blog.csdn.net/qq_40925239/article/details/83279957

    https://blog.csdn.net/qq_15969343/article/details/81673970

  • 相关阅读:
    RabbitMQ核心组件及应用场景
    集群架构和CentOS7安装RabbitMQ集群(单机版)
    CentOS7下安装单机版RabbitMQ及权限赋予
    Spring事务管理
    java服务器图片压缩的几种方式及效率比较
    Spring中通过java的@Valid注解和@ControllerAdvice实现全局异常处理。
    go语言调度器源代码情景分析之三:内存
    go语言调度器源代码情景分析之二:CPU寄存器
    go语言调度器源代码情景分析之一:开篇语
    面试官:swoole 的认识和强大之处你不知道?回去吧!!!
  • 原文地址:https://www.cnblogs.com/51python/p/11033002.html
Copyright © 2020-2023  润新知