Python批量处理Word文档(.doc/.docx)——批量获取文档标题并以标题重命名文件

Python处理Word文档(.doc/.docx)——批量获取文档标题并以标题重命名文件

由于工作需要处理一批.doc文档,并且需要核对每个文档的标题,以标题重命名文件,之后将word文档批量转换成pdf。人工完成这些内容再文档数量庞大的情况下耗时耗力,于是写了几个脚本来处理。

需要安装python-docx,pywin32库。

doc2docx.py

Python有专门读取.docx的模块python_docx(只能读取.docx文件,不能读取.doc文件),因为只能处理docx文件,所以需要将doc转换成docx格式(直接修改文件后缀名是无效的呃。)

import os
from docx import Document 
from docx.shared import Inches
from win32com import client as wc
word = wc.Dispatch("Word.Application")

ul=r"D:\\docs\\sec-report\\test" #需要处理的文件所在文件夹目录
filenamelist=os.listdir(ul)
for y in xrange(len(filenamelist)): #for循环处理整个目录下的文件
    doc = word.Documents.Open(ul+"\\"+filenamelist[y])	
    rename=os.path.splitext(filenamelist[y]) #将文件名和后缀分割,用rename[0]只取文件名
    doc.SaveAs("D:\\docs\\sec-report\\test"+"\\"+"t"+rename[0]+".docx", 12) #12表示docx格式
doc.Close()
word.Quit() 

getparagrahs.py

获取word文档中的所有段落或者某一段落。

#coding=utf-8
import os
import sys
import docx
import codecs
from docx import Document 
from docx.shared import Inches
from win32com import client as wc
reload(sys) #读取中文
sys.setdefaultencoding("utf-8")
word = wc.Dispatch("Word.Application")
ul=r"D:\\docs\\sec-report\\test" 
filenamelist=os.listdir(ul)
for y in xrange(len(filenamelist)):
    doc = docx.Document(ul+"\\"+filenamelist[y])
    print (doc.paragraphs[0].text)

getdoctitleAndrename.py

获取word文档的标题,并以标题命名文件。

from docx.shared import Inches
from win32com import client as wc
reload(sys)
sys.setdefaultencoding("utf-8")
word=wc.Dispatch("Word.Application")
ul=r"D:\\docs\\sec-report\\test"#需要处理的文件所在文件夹目录
filenamelist=os.listdir(ul)
for y in xrange(len(filenamelist)):
    doc = word.Documents.Open(ul+"\\"+filenamelist[y])#为了使用SaveAs方法
    doc2=docx.Document(ul+"\\"+filenamelist[y])#为了使用paragraphs方法
    for p in doc2.paragraphs:
    	if p.style.name=="Title":#匹配文档格式,获取文档标题,Title改成Heading 1则获取一级标题
    		rename=p.text
    		print (filenamelist[y]+"重命名为:"+rename)
    		doc.SaveAs("D:\\docs\\sec-report\\test"+"\\"+rename+".docx", 12)
doc.Close()
word.Quit()

你可能感兴趣的:(日常学习)