问,将大象放进冰箱需要几步?
啊呸,串场了。将doc文件转为txt文件需要几步?
答:需要两步,
1.先将doc转为docx。因为python-docx只能处理docx的文件,而无法处理doc文档。docx本质是xml文件比doc更小些。这里需要的包为win32com,如果没有,则pip即可。
import os
from win32com import client as wc
from docx import Document
from tqdm import tqdm
def doc2docx(origin_path, goal_path):
"""
将doc转为docx
"""
word = wc.Dispatch("Word.Application")
# 不能用相对路径,用绝对路径
# 需要处理的文件所在文件夹目录
for i in os.listdir(origin_path):
# 找出文件中以.doc结尾并且不以~$开头的文件(~$是为了排除临时文件的)
if i.endswith('.doc') and not i.startswith('~$'):
print(i)
doc_path = os.path.join(origin_path, i)
doc = word.Documents.Open(doc_path)
# 将文件名与后缀分割
rename = os.path.splitext(i)
# 将文件另存为.docx
save_path = os.path.join(goal_path, rename[0] + '.docx')
doc.SaveAs(save_path, 12) # 12表示docx格式
doc.Close()
word.Quit()
2.将docx转为txt文本。这些需要python-docx,如果没有则pip就好。
import os
from win32com import client as wc
from docx import Document
from tqdm import tqdm
def docx2txt(path):
"""
将docx转为txt
"""
txt_count = 1
for i in os.listdir(path):
if i.endswith('.docx') and not i.startswith('~$'):
file_path = os.path.join(path, i)
document = Document(file_path)
txt_path = os.path.join(path, str(txt_count)+'.txt')
f = open(txt_path, 'w', encoding='utf-8')
for paragraph in tqdm(document.paragraphs):
f.write(paragraph.text.strip()+'\n')
f.close()
txt_count += 1