使用Python批量将PDF、Word(.docx)和Word(.doc)文件转换为TXT文件
1、PDF转TXT
首先需要安装Python当中的PyMuPDF库。
pip install PyMuPDF
将PDF文件保存在文件夹“C:\Users\merit\Desktop\测试文件”下,输出TXT文件同样保存在“C:\Users\merit\Desktop\测试文件”当中,具体调用代码如下:
import fitz
import os
# 指定PDF文件夹的路径
pdf_folder = r'C:\Users\merit\Desktop\测试文件'
# 确保指定的文件夹存在
if not os.path.exists(pdf_folder):
print("指定的文件夹不存在。")
else:
# 遍历PDF文件夹中的所有PDF文件
for pdf_filename in os.listdir(pdf_folder):
if pdf_filename.endswith('.pdf'):
pdf_path = os.path.join(pdf_folder, pdf_filename)
# 打开PDF文件
pdf_document = fitz.open(pdf_path)
# 获取PDF中的所有页面并将它们合并为一个字符串
pdf_text = ""
for page_num in range(pdf_document.page_count):
page = pdf_document.load_page(page_num)
pdf_text += page.get_text()
# 创建一个TXT文件并将PDF内容写入其中
txt_filename = os.path.splitext(pdf_filename)[0] + '.txt'
txt_path = os.path.join(pdf_folder, txt_filename)
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(pdf_text)
pdf_document.close()
# 重新打开TXT文件,将编码更改为UTF-8
with open(txt_path, 'r', encoding='utf-8') as txt_file:
content = txt_file.read()
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(content)
print("PDF文件已成功转换为UTF-8编码的TXT文件并保留相同的文件名。")
2、Word(.docx)转TXT
需要使用Python中的python-docx
库,首先安装python-docx
库。
pip install python-docx
将Word(.docx)文件保存在文件夹“C:\Users\merit\Desktop\测试文件”下,输出TXT文件同样保存在“C:\Users\merit\Desktop\测试文件”当中,具体调用代码如下:
import os
from docx import Document
# 指定Word文档文件夹的路径
docx_folder = r'C:\Users\merit\Desktop\测试文件'
# 确保指定的文件夹存在
if not os.path.exists(docx_folder):
print("指定的文件夹不存在。")
else:
# 遍历Word文档文件夹中的所有Word文档
for docx_filename in os.listdir(docx_folder):
if docx_filename.endswith('.docx'):
docx_path = os.path.join(docx_folder, docx_filename)
txt_filename = os.path.splitext(docx_filename)[0] + '.txt'
txt_path = os.path.join(docx_folder, txt_filename)
# 打开Word文档
doc = Document(docx_path)
# 创建一个TXT文件并将Word文档内容写入其中
with open(txt_path, 'w', encoding='utf-8') as txt_file:
for paragraph in doc.paragraphs:
txt_file.write(paragraph.text + '\n')
print("Word文档已成功转换为UTF-8编码的TXT文件。")
3、Word(.doc)转TXT
在Windows系统中使用Python将.doc文件转换为.txt文件,可以使用pywin32
库。对于包含非UTF-8字符的文本文件,尝试将编码强制更改为UTF-8时可能会导致解码错误。需要先确定原始文件的编码,然后进行相应的转换。使用 chardet
来检测文件的编码,并将其转换为UTF-8。
pip install pywin32
pip install chardet
将Word(.doc)文件保存在文件夹“C:\Users\merit\Desktop\测试文件”下,输出TXT文件同样保存在“C:\Users\merit\Desktop\测试文件”当中,具体调用代码如下:
import os
import win32com.client
import chardet
# 指定.doc文件夹的路径
doc_folder = r'C:\Users\merit\Desktop\测试文件'
# 确保指定的文件夹存在
if not os.path.exists(doc_folder):
print("指定的文件夹不存在。")
else:
# 遍历.doc文件夹中的所有.doc文件
for doc_filename in os.listdir(doc_folder):
if doc_filename.endswith('.doc'):
doc_path = os.path.join(doc_folder, doc_filename)
txt_filename = os.path.splitext(doc_filename)[0] + '.txt'
txt_path = os.path.join(doc_folder, txt_filename)
# 使用pywin32库将.doc文件转换为.txt文件
word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(doc_path)
doc.SaveAs(txt_path, FileFormat=2) # FileFormat 2 表示.txt格式
doc.Close()
word.Quit()
# 使用chardet库检测TXT文件的编码
with open(txt_path, 'rb') as txt_file:
raw_data = txt_file.read()
result = chardet.detect(raw_data)
encoding = result['encoding']
if encoding != 'utf-8':
# 如果编码不是UTF-8,转换为UTF-8编码
with open(txt_path, 'r', encoding=encoding, errors='ignore') as txt_file:
content = txt_file.read()
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(content)
print(".doc文件已成功转换为UTF-8编码的.txt文件。")