转换doc为docx文件保存为txt并提取信息

-- coding: utf-8 --:

author:

time:

import os
import shutil
import win32com
import win32com.client

def data_():

# 读取数据文件修改文件后缀名统一文件格式,然后移动文件到新的文件夹中
path1 = r'metadata'
path2 = r'E:\data_project\data_docx'
path1_ls = os.listdir(path1)
path2_ls = []
path2_s = []

for i in range(len(path1_ls)):
    if path1_ls[i].endswith('.doc') and not path1_ls[i].startswith('~$'):
        # 使用os.path.join()方法把源文件进行移动操作
        path1_ls[i] = os.path.join(path1_ls[i])
        path2_ls.append(os.path.join(path2,path1_ls[i].replace('.doc','.docx')))
    elif path1_ls[i].endswith('.docx'):
        # 移动操作
        path1_ls[i] = os.path.join(path1_ls[i])
        path2_ls.append(os.path.join(path2,path1_ls[i]))
        # 移动的文件类型
    else:
        path2_s.append(path1_ls[i])
        # 路径统一的前提,进行循环文件移动文件
for i in range(len(path1_ls)):
    shutil.copy(path1+'/'+path1_ls[i],path2_ls[i])



# 读取数据文件把docx另存为txt文件
path = r'E:\data_project\data_docx'
path0 = r'E:\data_project\data_TXT'
dir = os.listdir(path)

for line in range(len(dir)):
    try:
        # 读取文件用后缀名切割作为文件的名字
        dataStr = str(dir[line]).split('.d')[0]
        wc = win32com.client.constants
        wps = win32com.client.gencache.EnsureDispatch('kwps.application')
        try:
            dd = path + '\\' + dir[line]
            d = wps.Documents.Open(dd)
        except:
            continue
        ddd = path0+'\\'+dataStr+'.txt'
        print(ddd)
        d.SaveAs2(ddd, FileFormat=wc.wdFormatText)
        # 编辑完文档要关闭
        wps.Documents.Close()
        # 关闭保存数据流
        wps.Documents.Close(wc.wdDoNotSaveChanges)
        # 关闭数据流
        wps.Quit()
    except:
        pass

def process():

# 读取txt抽取文件中的信息
path = r'E:\data_project\data_TXT'
dir = os.listdir(path)
# 获取文件下面的所有文件
for line in range(len(dir)):
    # 读取文件用后缀名切割作为文件的名字
    dataStr = str(dir[line]).split('.d')[0]
    # 把读取读出来的信息保存为——CSV格式等
    with open(r'data_CSV/'+dataStr+'.csv', 'w', encoding='UTF-8')as df:
        # 读取文件采用的gbk格式
        with open(path+'/'+dir[line],'r',encoding='gbk')as tf:
            for line in tf.readlines():
                # 给字符串去重以字符串的形式文件进行查找
                print(line.strip())
                if line.find('单位名称')>=0 or line.find('软件名称')>=0 :
                     df.writelines(line.strip()+'\n')
                elif line.find('邮寄地址')>=0 or line.find('信用代码')>=0 or line.find('邮政编码')>=0:
                    df.writelines(line.strip()+'\n')
                elif line.find('企业邮箱')>=0 or line.find('个人邮箱')>=0:
                     df.writelines(line.strip()+'\n')
                elif line.find('法人代表')>=0 or line.find('联系人员')>=0 or line.find('技术人员')>=0:
                    df.writelines(line.strip()+'\n')
                elif line.find('联系方式')>=0 or line.find('电子邮箱')>=0 and line.find('电子邮箱')<=30:
                    df.writelines(line.strip()+'\n')

if name == ‘main’:
# 调用函数
data_()
process()

上一篇:Word无法打开该文件,因为文件格式与文件扩展名不匹配


下一篇:python(os、os.path、shutil模块)