一、 读取txt文件
直接使用open()函数
def readTxt(name):
ftxt = open(name,'r',encoding='utf-8')
x = ftxt.read()
ftxt.close()
return x
二、 读取doc、docx文件
- 读取docx文件
需要引入python-docx模块
命令行安装:pip install python-docx
pycharm安装:File-->Settings-->Project:index.py-->Python Interpreter
导入对应包
def readWord(name):
# 读取word
import docx # 引入python-docx模块
fword = docx.Document(name) # name为文件路径
str1 = ''
for para in fword.paragraphs: # 读取word的每一段内容
str1 = para.text #para.text即为该段落的内容
return str1 # 返回读取到的文件内容
2.读取doc文件
python-docx只能读取docx文件,无法读取doc文件;
可以先将doc文件转化为docx文件,然后用python-docx读取;
安装pywin32包:
命令行安装:pip install pywin32
pycharm安装:参照上方docx段落中的操作;
def docTodocx(path,fileName):
from win32com import client as wc #引入pywin32包
word = wc.Dispatch("Word.Application") #创建对象
doc = word.Documents.Open(path "/" fileName ".doc")#读取doc文件
doc.SaveAs(path "/" fileName ".docx",12) #保存docx文件
doc.Close()
word.Quit()
三、 读取pdf文件
需要引入包pdfminer3k
命令行安装: pip install pdfminer3k
pycharm安装:参照上方docx段落中的操作;
def readPdf(name):
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
text_path = r'' name #name是文件路径
fpdf = open(text_path, 'rb')
parser = PDFParser(fpdf) # 用文件对象创建一个PDF文档分析器
doc = PDFDocument() # 创建一个PDF文档
parser.set_document(doc) # 连接分析器与文档对象
doc.set_parser(parser)
doc.initialize()
strs = ''
if not doc.is_extractable:
# 检测文档是否提供txt转换,不提供就忽略
raise PDFTextExtractionNotAllowed
else:
pdfMgr = PDFResourceManager() # 创建PDF,资源管理器,来共享资源
laparams = LAParams() # 创建一个PDF设备对象
device = PDFPageAggregator(pdfMgr, laparams = laparams)
interpreter = PDFPageInterpreter(pdfMgr, device) # 创建一个PDF解释其对象
for page in doc.get_pages():
interpreter.process_page(page) # doc.get_pages() 获取page列表
layout = device.get_result() # 接受该页面的LTPage对象
# 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象
# 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等
# 想要获取文本就获得对象的text属性,
for x in layout:
if (isinstance(x, LTTextBoxHorizontal)):
strs = x.get_text()
return strs # 返回读取到的文件内容