1.流程:批量读取文件夹下文件,批量转换word为txt文件,读取txt文件内容
2.word文件放入: D:\jianli ,文件夹下放入 一个word文件
代码如下:
注意导入库
mport os
import re
import sys
import psutil
import win32com.client as wc
import configparser
import time
# -*- coding:utf-8 -*-
import os
import re
import sys
import psutil
import win32com.client as wc
import configparser
import time
'''自动简历解析 Python脚本'''
# 关闭 wps 进程
def printPids():
pids = psutil.pids()
for pid in pids:
try:
p = psutil.Process(pid)
# print('pid=%s,pname=%s' % (pid, p.name()))
# 关闭excel进程
if p.name() == 'wps.exe':
print("关闭wps.exe")
cmd = 'taskkill /F /IM wps.exe'
os.system(cmd)
except Exception as e:
print(e)
def getWordPath(path1, path2):
# doc文件另存为docx
word = wc.Dispatch("Word.Application")
doc = word.Documents.Open(path1)
# 上面的地方只能使用完整绝对地址,相对地址找不到文件,且,只能用“\\”,不能用“/”,哪怕加了 r 也不行,涉及到将反斜杠看成转义字符。
doc.SaveAs(path2, 2, False, "", True, "", False, False, False,
False) # 转换后的文件,12代表转换后为docx文件
# doc.SaveAs(r"F:\\***\\***\\appendDoc\\***.docx", 12)#或直接简写
# 注意SaveAs会打开保存后的文件,有时可能看不到,但后台一定是打开的
doc.Close
word.Quit
# 遍历文件夹
def walkFile(file):
file_list = []
for root, dirs, files in os.walk(file):
# root 表示当前正在访问的文件夹路径
# dirs 表示该文件夹下的子目录名list
# files 表示该文件夹下的文件list
# 遍历文件
for f in files:
pathtem = os.path.join(root, f)
# 只需要后缀为.doc的文件
if ".doc" in str(pathtem):
if ".docx" in str(pathtem):
continue
else:
print(pathtem)
file_list.append([pathtem])
# 遍历所有的文件夹
# for d in dirs:
# print(os.path.join(root, d))
return file_list
# 删除指定路径下的所有文件
def removeFilesByPath(file):
file_list = []
for root, dirs, files in os.walk(file):
# 遍历文件
for f in files:
pathtem = os.path.join(root, f)
# 删除文件
os.remove(pathtem)
# 转换dox 为 doxc 文件,以便Python库解析
def fileDocToDocx(path1, path2, file_list):
txtFilesList = []
# print(file_list)
for l in file_list:
temppath1 = l[0]
if ".docx" not in temppath1:
temppath2 = path2 + temppath1.replace(path1, "") + "x"
else:
temppath2 = path2 + temppath1.replace(path1, "")
temppath2 = temppath2.replace(".docx", ".txt")
print(temppath1, temppath2)
txtFilesList.append([temppath2])
# doc文件另存为docx
getWordPath(temppath1, temppath2)
return txtFilesList
# 正则表达式 提取中文
def translate_zh(str):
line = str # str.strip().decode('utf-8', 'ignore') # 处理前进行相关的处理,包括转换成Unicode等
p2 = re.compile(r'[^\u4e00-\u9fa5]') # 中文的编码范围是:\u4e00到\u9fa5
zh = " ".join(p2.split(line)).strip()
zh = ",".join(zh.split())
outStr = zh # 经过相关处理后得到中文的文本
return outStr
# 读取text文本内容
def readTxt(filePath):
texts = ""
fileobj = open(filePath, mode='r')
all_lines = fileobj.readlines()
for line in all_lines:
line = str(line).replace(" ", "").replace("\n", "")
# print(line, str(len(line)))
if len(line) == 4:
line = "####" + str(line)
texts = texts + line
fileobj.close()
return texts.replace("????", "??")
# 解析word 智联数据
if __name__ == '__main__':
path1 = "D:\\jianli\\"
path2 = "D:\\jianli\\"
# 获取所有的doc文件
file_list = walkFile(path1)
# 转换dox 为 txt 文件,以便Python库解析
txtxFilesList = fileDocToDocx(path1, path2, file_list)
# print("待解析文件:", txtxFilesList)
print("待解析文件集合大小:", len(txtxFilesList))
# 解析文件内容
time.sleep(1)
printPids()
time.sleep(2)
for dx in txtxFilesList:
try:
print("文件路径-----:", dx[0])
filePath = dx[0]
texts = readTxt(filePath)
print("文档内容", texts)
except Exception as e:
print("解析异常:", filePath, e)
continue
文档存放路径可以自信修改,运行代码后: 同级目录出现 xxx.txt文件