-- 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()